lusid-sdk 2.1.91__py3-none-any.whl → 2.1.95__py3-none-any.whl

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

Potentially problematic release.


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

lusid/__init__.py CHANGED
@@ -473,6 +473,9 @@ from lusid.models.instrument_delete_modes import InstrumentDeleteModes
473
473
  from lusid.models.instrument_event import InstrumentEvent
474
474
  from lusid.models.instrument_event_configuration import InstrumentEventConfiguration
475
475
  from lusid.models.instrument_event_holder import InstrumentEventHolder
476
+ from lusid.models.instrument_event_instruction import InstrumentEventInstruction
477
+ from lusid.models.instrument_event_instruction_request import InstrumentEventInstructionRequest
478
+ from lusid.models.instrument_event_instructions_response import InstrumentEventInstructionsResponse
476
479
  from lusid.models.instrument_event_type import InstrumentEventType
477
480
  from lusid.models.instrument_id_type_descriptor import InstrumentIdTypeDescriptor
478
481
  from lusid.models.instrument_id_value import InstrumentIdValue
@@ -1502,6 +1505,9 @@ __all__ = [
1502
1505
  "InstrumentEvent",
1503
1506
  "InstrumentEventConfiguration",
1504
1507
  "InstrumentEventHolder",
1508
+ "InstrumentEventInstruction",
1509
+ "InstrumentEventInstructionRequest",
1510
+ "InstrumentEventInstructionsResponse",
1505
1511
  "InstrumentEventType",
1506
1512
  "InstrumentIdTypeDescriptor",
1507
1513
  "InstrumentIdValue",
@@ -35,6 +35,9 @@ from lusid.models.composite_breakdown_request import CompositeBreakdownRequest
35
35
  from lusid.models.composite_breakdown_response import CompositeBreakdownResponse
36
36
  from lusid.models.composite_dispersion_response import CompositeDispersionResponse
37
37
  from lusid.models.deleted_entity_response import DeletedEntityResponse
38
+ from lusid.models.instrument_event_instruction import InstrumentEventInstruction
39
+ from lusid.models.instrument_event_instruction_request import InstrumentEventInstructionRequest
40
+ from lusid.models.instrument_event_instructions_response import InstrumentEventInstructionsResponse
38
41
  from lusid.models.model_property import ModelProperty
39
42
  from lusid.models.operation import Operation
40
43
  from lusid.models.performance_return import PerformanceReturn
@@ -73,6 +76,181 @@ class PortfoliosApi:
73
76
  api_client = ApiClient.get_default()
74
77
  self.api_client = api_client
75
78
 
79
+ @overload
80
+ async def delete_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be deleted.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, **kwargs) -> DeletedEntityResponse: # noqa: E501
81
+ ...
82
+
83
+ @overload
84
+ def delete_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be deleted.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> DeletedEntityResponse: # noqa: E501
85
+ ...
86
+
87
+ @validate_arguments
88
+ def delete_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be deleted.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[DeletedEntityResponse, Awaitable[DeletedEntityResponse]]: # noqa: E501
89
+ """[EARLY ACCESS] DeleteInstrumentEventInstruction: Delete Instrument Event Instruction # noqa: E501
90
+
91
+ Delete a particular instruction for a particular portfolio # noqa: E501
92
+ This method makes a synchronous HTTP request by default. To make an
93
+ asynchronous HTTP request, please pass async_req=True
94
+
95
+ >>> thread = api.delete_instrument_event_instruction(scope, code, instrument_event_instruction_id, portfolio_effective_at, async_req=True)
96
+ >>> result = thread.get()
97
+
98
+ :param scope: The scope of the portfolio. (required)
99
+ :type scope: str
100
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
101
+ :type code: str
102
+ :param instrument_event_instruction_id: The id of the instruction to be deleted. (required)
103
+ :type instrument_event_instruction_id: str
104
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
105
+ :type portfolio_effective_at: str
106
+ :param async_req: Whether to execute the request asynchronously.
107
+ :type async_req: bool, optional
108
+ :param _request_timeout: timeout setting for this request.
109
+ If one number provided, it will be total request
110
+ timeout. It can also be a pair (tuple) of
111
+ (connection, read) timeouts.
112
+ :return: Returns the result object.
113
+ If the method is called asynchronously,
114
+ returns the request thread.
115
+ :rtype: DeletedEntityResponse
116
+ """
117
+ kwargs['_return_http_data_only'] = True
118
+ if '_preload_content' in kwargs:
119
+ message = "Error! Please call the delete_instrument_event_instruction_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
120
+ raise ValueError(message)
121
+ if async_req is not None:
122
+ kwargs['async_req'] = async_req
123
+ return self.delete_instrument_event_instruction_with_http_info(scope, code, instrument_event_instruction_id, portfolio_effective_at, **kwargs) # noqa: E501
124
+
125
+ @validate_arguments
126
+ def delete_instrument_event_instruction_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be deleted.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
127
+ """[EARLY ACCESS] DeleteInstrumentEventInstruction: Delete Instrument Event Instruction # noqa: E501
128
+
129
+ Delete a particular instruction for a particular portfolio # noqa: E501
130
+ This method makes a synchronous HTTP request by default. To make an
131
+ asynchronous HTTP request, please pass async_req=True
132
+
133
+ >>> thread = api.delete_instrument_event_instruction_with_http_info(scope, code, instrument_event_instruction_id, portfolio_effective_at, async_req=True)
134
+ >>> result = thread.get()
135
+
136
+ :param scope: The scope of the portfolio. (required)
137
+ :type scope: str
138
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
139
+ :type code: str
140
+ :param instrument_event_instruction_id: The id of the instruction to be deleted. (required)
141
+ :type instrument_event_instruction_id: str
142
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
143
+ :type portfolio_effective_at: str
144
+ :param async_req: Whether to execute the request asynchronously.
145
+ :type async_req: bool, optional
146
+ :param _preload_content: if False, the ApiResponse.data will
147
+ be set to none and raw_data will store the
148
+ HTTP response body without reading/decoding.
149
+ Default is True.
150
+ :type _preload_content: bool, optional
151
+ :param _return_http_data_only: response data instead of ApiResponse
152
+ object with status code, headers, etc
153
+ :type _return_http_data_only: bool, optional
154
+ :param _request_timeout: timeout setting for this request. If one
155
+ number provided, it will be total request
156
+ timeout. It can also be a pair (tuple) of
157
+ (connection, read) timeouts.
158
+ :param _request_auth: set to override the auth_settings for an a single
159
+ request; this effectively ignores the authentication
160
+ in the spec for a single request.
161
+ :type _request_auth: dict, optional
162
+ :type _content_type: string, optional: force content-type for the request
163
+ :return: Returns the result object.
164
+ If the method is called asynchronously,
165
+ returns the request thread.
166
+ :rtype: tuple(DeletedEntityResponse, status_code(int), headers(HTTPHeaderDict))
167
+ """
168
+
169
+ _params = locals()
170
+
171
+ _all_params = [
172
+ 'scope',
173
+ 'code',
174
+ 'instrument_event_instruction_id',
175
+ 'portfolio_effective_at'
176
+ ]
177
+ _all_params.extend(
178
+ [
179
+ 'async_req',
180
+ '_return_http_data_only',
181
+ '_preload_content',
182
+ '_request_timeout',
183
+ '_request_auth',
184
+ '_content_type',
185
+ '_headers'
186
+ ]
187
+ )
188
+
189
+ # validate the arguments
190
+ for _key, _val in _params['kwargs'].items():
191
+ if _key not in _all_params:
192
+ raise ApiTypeError(
193
+ "Got an unexpected keyword argument '%s'"
194
+ " to method delete_instrument_event_instruction" % _key
195
+ )
196
+ _params[_key] = _val
197
+ del _params['kwargs']
198
+
199
+ _collection_formats = {}
200
+
201
+ # process the path parameters
202
+ _path_params = {}
203
+ if _params['scope']:
204
+ _path_params['scope'] = _params['scope']
205
+
206
+ if _params['code']:
207
+ _path_params['code'] = _params['code']
208
+
209
+ if _params['instrument_event_instruction_id']:
210
+ _path_params['instrumentEventInstructionId'] = _params['instrument_event_instruction_id']
211
+
212
+
213
+ # process the query parameters
214
+ _query_params = []
215
+ if _params.get('portfolio_effective_at') is not None: # noqa: E501
216
+ _query_params.append(('portfolioEffectiveAt', _params['portfolio_effective_at']))
217
+
218
+ # process the header parameters
219
+ _header_params = dict(_params.get('_headers', {}))
220
+ # process the form parameters
221
+ _form_params = []
222
+ _files = {}
223
+ # process the body parameter
224
+ _body_params = None
225
+ # set the HTTP header `Accept`
226
+ _header_params['Accept'] = self.api_client.select_header_accept(
227
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
228
+
229
+ # authentication setting
230
+ _auth_settings = ['oauth2'] # noqa: E501
231
+
232
+ _response_types_map = {
233
+ '200': "DeletedEntityResponse",
234
+ '400': "LusidValidationProblemDetails",
235
+ }
236
+
237
+ return self.api_client.call_api(
238
+ '/api/portfolios/{scope}/{code}/instrumenteventinstructions/{instrumentEventInstructionId}', 'DELETE',
239
+ _path_params,
240
+ _query_params,
241
+ _header_params,
242
+ body=_body_params,
243
+ post_params=_form_params,
244
+ files=_files,
245
+ response_types_map=_response_types_map,
246
+ auth_settings=_auth_settings,
247
+ async_req=_params.get('async_req'),
248
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
249
+ _preload_content=_params.get('_preload_content', True),
250
+ _request_timeout=_params.get('_request_timeout'),
251
+ collection_formats=_collection_formats,
252
+ _request_auth=_params.get('_request_auth'))
253
+
76
254
  @overload
77
255
  async def delete_key_from_portfolio_access_metadata(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Quote Access Metadata Rule to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Portfolio code")], metadata_key : Annotated[constr(strict=True, max_length=256, min_length=1), Field(..., description="The metadataKey identifying the access metadata entry to delete")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective date to delete at, if this is not supplied, it will delete all data found")] = None, effective_until : Annotated[Optional[datetime], Field(description="The effective date until which the delete is valid. If not supplied this will be valid indefinitely, or until the next 'effectiveAt' date of the Access Metadata")] = None, **kwargs) -> DeletedEntityResponse: # noqa: E501
78
256
  ...
@@ -1179,6 +1357,192 @@ class PortfoliosApi:
1179
1357
  collection_formats=_collection_formats,
1180
1358
  _request_auth=_params.get('_request_auth'))
1181
1359
 
1360
+ @overload
1361
+ async def get_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be retrieved.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.")] = None, **kwargs) -> InstrumentEventInstruction: # noqa: E501
1362
+ ...
1363
+
1364
+ @overload
1365
+ def get_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be retrieved.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> InstrumentEventInstruction: # noqa: E501
1366
+ ...
1367
+
1368
+ @validate_arguments
1369
+ def get_instrument_event_instruction(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be retrieved.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[InstrumentEventInstruction, Awaitable[InstrumentEventInstruction]]: # noqa: E501
1370
+ """[EARLY ACCESS] GetInstrumentEventInstruction: Get Instrument Event Instruction # noqa: E501
1371
+
1372
+ Get a particular instruction for a particular portfolio # noqa: E501
1373
+ This method makes a synchronous HTTP request by default. To make an
1374
+ asynchronous HTTP request, please pass async_req=True
1375
+
1376
+ >>> thread = api.get_instrument_event_instruction(scope, code, instrument_event_instruction_id, portfolio_effective_at, as_at, async_req=True)
1377
+ >>> result = thread.get()
1378
+
1379
+ :param scope: The scope of the portfolio. (required)
1380
+ :type scope: str
1381
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
1382
+ :type code: str
1383
+ :param instrument_event_instruction_id: The id of the instruction to be retrieved. (required)
1384
+ :type instrument_event_instruction_id: str
1385
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
1386
+ :type portfolio_effective_at: str
1387
+ :param as_at: The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.
1388
+ :type as_at: datetime
1389
+ :param async_req: Whether to execute the request asynchronously.
1390
+ :type async_req: bool, optional
1391
+ :param _request_timeout: timeout setting for this request.
1392
+ If one number provided, it will be total request
1393
+ timeout. It can also be a pair (tuple) of
1394
+ (connection, read) timeouts.
1395
+ :return: Returns the result object.
1396
+ If the method is called asynchronously,
1397
+ returns the request thread.
1398
+ :rtype: InstrumentEventInstruction
1399
+ """
1400
+ kwargs['_return_http_data_only'] = True
1401
+ if '_preload_content' in kwargs:
1402
+ message = "Error! Please call the get_instrument_event_instruction_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1403
+ raise ValueError(message)
1404
+ if async_req is not None:
1405
+ kwargs['async_req'] = async_req
1406
+ return self.get_instrument_event_instruction_with_http_info(scope, code, instrument_event_instruction_id, portfolio_effective_at, as_at, **kwargs) # noqa: E501
1407
+
1408
+ @validate_arguments
1409
+ def get_instrument_event_instruction_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], instrument_event_instruction_id : Annotated[StrictStr, Field(..., description="The id of the instruction to be retrieved.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1410
+ """[EARLY ACCESS] GetInstrumentEventInstruction: Get Instrument Event Instruction # noqa: E501
1411
+
1412
+ Get a particular instruction for a particular portfolio # noqa: E501
1413
+ This method makes a synchronous HTTP request by default. To make an
1414
+ asynchronous HTTP request, please pass async_req=True
1415
+
1416
+ >>> thread = api.get_instrument_event_instruction_with_http_info(scope, code, instrument_event_instruction_id, portfolio_effective_at, as_at, async_req=True)
1417
+ >>> result = thread.get()
1418
+
1419
+ :param scope: The scope of the portfolio. (required)
1420
+ :type scope: str
1421
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
1422
+ :type code: str
1423
+ :param instrument_event_instruction_id: The id of the instruction to be retrieved. (required)
1424
+ :type instrument_event_instruction_id: str
1425
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
1426
+ :type portfolio_effective_at: str
1427
+ :param as_at: The asAt datetime at which to retrieve the instruction. Defaults to return the latest version of the instruction if not specified.
1428
+ :type as_at: datetime
1429
+ :param async_req: Whether to execute the request asynchronously.
1430
+ :type async_req: bool, optional
1431
+ :param _preload_content: if False, the ApiResponse.data will
1432
+ be set to none and raw_data will store the
1433
+ HTTP response body without reading/decoding.
1434
+ Default is True.
1435
+ :type _preload_content: bool, optional
1436
+ :param _return_http_data_only: response data instead of ApiResponse
1437
+ object with status code, headers, etc
1438
+ :type _return_http_data_only: bool, optional
1439
+ :param _request_timeout: timeout setting for this request. If one
1440
+ number provided, it will be total request
1441
+ timeout. It can also be a pair (tuple) of
1442
+ (connection, read) timeouts.
1443
+ :param _request_auth: set to override the auth_settings for an a single
1444
+ request; this effectively ignores the authentication
1445
+ in the spec for a single request.
1446
+ :type _request_auth: dict, optional
1447
+ :type _content_type: string, optional: force content-type for the request
1448
+ :return: Returns the result object.
1449
+ If the method is called asynchronously,
1450
+ returns the request thread.
1451
+ :rtype: tuple(InstrumentEventInstruction, status_code(int), headers(HTTPHeaderDict))
1452
+ """
1453
+
1454
+ _params = locals()
1455
+
1456
+ _all_params = [
1457
+ 'scope',
1458
+ 'code',
1459
+ 'instrument_event_instruction_id',
1460
+ 'portfolio_effective_at',
1461
+ 'as_at'
1462
+ ]
1463
+ _all_params.extend(
1464
+ [
1465
+ 'async_req',
1466
+ '_return_http_data_only',
1467
+ '_preload_content',
1468
+ '_request_timeout',
1469
+ '_request_auth',
1470
+ '_content_type',
1471
+ '_headers'
1472
+ ]
1473
+ )
1474
+
1475
+ # validate the arguments
1476
+ for _key, _val in _params['kwargs'].items():
1477
+ if _key not in _all_params:
1478
+ raise ApiTypeError(
1479
+ "Got an unexpected keyword argument '%s'"
1480
+ " to method get_instrument_event_instruction" % _key
1481
+ )
1482
+ _params[_key] = _val
1483
+ del _params['kwargs']
1484
+
1485
+ _collection_formats = {}
1486
+
1487
+ # process the path parameters
1488
+ _path_params = {}
1489
+ if _params['scope']:
1490
+ _path_params['scope'] = _params['scope']
1491
+
1492
+ if _params['code']:
1493
+ _path_params['code'] = _params['code']
1494
+
1495
+ if _params['instrument_event_instruction_id']:
1496
+ _path_params['instrumentEventInstructionId'] = _params['instrument_event_instruction_id']
1497
+
1498
+
1499
+ # process the query parameters
1500
+ _query_params = []
1501
+ if _params.get('portfolio_effective_at') is not None: # noqa: E501
1502
+ _query_params.append(('portfolioEffectiveAt', _params['portfolio_effective_at']))
1503
+
1504
+ if _params.get('as_at') is not None: # noqa: E501
1505
+ if isinstance(_params['as_at'], datetime):
1506
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
1507
+ else:
1508
+ _query_params.append(('asAt', _params['as_at']))
1509
+
1510
+ # process the header parameters
1511
+ _header_params = dict(_params.get('_headers', {}))
1512
+ # process the form parameters
1513
+ _form_params = []
1514
+ _files = {}
1515
+ # process the body parameter
1516
+ _body_params = None
1517
+ # set the HTTP header `Accept`
1518
+ _header_params['Accept'] = self.api_client.select_header_accept(
1519
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1520
+
1521
+ # authentication setting
1522
+ _auth_settings = ['oauth2'] # noqa: E501
1523
+
1524
+ _response_types_map = {
1525
+ '200': "InstrumentEventInstruction",
1526
+ '400': "LusidValidationProblemDetails",
1527
+ }
1528
+
1529
+ return self.api_client.call_api(
1530
+ '/api/portfolios/{scope}/{code}/instrumenteventinstructions/{instrumentEventInstructionId}', 'GET',
1531
+ _path_params,
1532
+ _query_params,
1533
+ _header_params,
1534
+ body=_body_params,
1535
+ post_params=_form_params,
1536
+ files=_files,
1537
+ response_types_map=_response_types_map,
1538
+ auth_settings=_auth_settings,
1539
+ async_req=_params.get('async_req'),
1540
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1541
+ _preload_content=_params.get('_preload_content', True),
1542
+ _request_timeout=_params.get('_request_timeout'),
1543
+ collection_formats=_collection_formats,
1544
+ _request_auth=_params.get('_request_auth'))
1545
+
1182
1546
  @overload
1183
1547
  async def get_portfolio(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the portfolio definition. 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 portfolio definition. Defaults to returning the latest version of the portfolio definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Portfolio' domain to decorate onto the portfolio, or from any domain that supports relationships to decorate onto related entities. These must take the format {domain}/{scope}/{code}, for example 'Portfolio/Manager/Id'.")] = None, relationship_definition_ids : Annotated[Optional[conlist(StrictStr)], Field(description="A list of relationship definitions that are used to decorate related entities onto the portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.")] = None, **kwargs) -> Portfolio: # noqa: E501
1184
1548
  ...
@@ -4577,6 +4941,196 @@ class PortfoliosApi:
4577
4941
  collection_formats=_collection_formats,
4578
4942
  _request_auth=_params.get('_request_auth'))
4579
4943
 
4944
+ @overload
4945
+ async def upsert_instrument_event_instructions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default)")], request_body : Annotated[Dict[str, InstrumentEventInstructionRequest], Field(..., description="The instructions to be upserted to the portfolio.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, **kwargs) -> InstrumentEventInstructionsResponse: # noqa: E501
4946
+ ...
4947
+
4948
+ @overload
4949
+ def upsert_instrument_event_instructions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default)")], request_body : Annotated[Dict[str, InstrumentEventInstructionRequest], Field(..., description="The instructions to be upserted to the portfolio.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> InstrumentEventInstructionsResponse: # noqa: E501
4950
+ ...
4951
+
4952
+ @validate_arguments
4953
+ def upsert_instrument_event_instructions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default)")], request_body : Annotated[Dict[str, InstrumentEventInstructionRequest], Field(..., description="The instructions to be upserted to the portfolio.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[InstrumentEventInstructionsResponse, Awaitable[InstrumentEventInstructionsResponse]]: # noqa: E501
4954
+ """[EARLY ACCESS] UpsertInstrumentEventInstructions: Upsert Instrument Event Instructions # noqa: E501
4955
+
4956
+ Batch upsert for instrument event instructions, for the portfolio or individual holdings # noqa: E501
4957
+ This method makes a synchronous HTTP request by default. To make an
4958
+ asynchronous HTTP request, please pass async_req=True
4959
+
4960
+ >>> thread = api.upsert_instrument_event_instructions(scope, code, success_mode, request_body, portfolio_effective_at, async_req=True)
4961
+ >>> result = thread.get()
4962
+
4963
+ :param scope: The scope of the portfolio. (required)
4964
+ :type scope: str
4965
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
4966
+ :type code: str
4967
+ :param success_mode: Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default) (required)
4968
+ :type success_mode: str
4969
+ :param request_body: The instructions to be upserted to the portfolio. (required)
4970
+ :type request_body: Dict[str, InstrumentEventInstructionRequest]
4971
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
4972
+ :type portfolio_effective_at: str
4973
+ :param async_req: Whether to execute the request asynchronously.
4974
+ :type async_req: bool, optional
4975
+ :param _request_timeout: timeout setting for this request.
4976
+ If one number provided, it will be total request
4977
+ timeout. It can also be a pair (tuple) of
4978
+ (connection, read) timeouts.
4979
+ :return: Returns the result object.
4980
+ If the method is called asynchronously,
4981
+ returns the request thread.
4982
+ :rtype: InstrumentEventInstructionsResponse
4983
+ """
4984
+ kwargs['_return_http_data_only'] = True
4985
+ if '_preload_content' in kwargs:
4986
+ message = "Error! Please call the upsert_instrument_event_instructions_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
4987
+ raise ValueError(message)
4988
+ if async_req is not None:
4989
+ kwargs['async_req'] = async_req
4990
+ return self.upsert_instrument_event_instructions_with_http_info(scope, code, success_mode, request_body, portfolio_effective_at, **kwargs) # noqa: E501
4991
+
4992
+ @validate_arguments
4993
+ def upsert_instrument_event_instructions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the portfolio. Together with the scope this uniquely identifies the portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default)")], request_body : Annotated[Dict[str, InstrumentEventInstructionRequest], Field(..., description="The instructions to be upserted to the portfolio.")], portfolio_effective_at : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="The effective date at which the portfolio will be resolved. Defaults to current time if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
4994
+ """[EARLY ACCESS] UpsertInstrumentEventInstructions: Upsert Instrument Event Instructions # noqa: E501
4995
+
4996
+ Batch upsert for instrument event instructions, for the portfolio or individual holdings # noqa: E501
4997
+ This method makes a synchronous HTTP request by default. To make an
4998
+ asynchronous HTTP request, please pass async_req=True
4999
+
5000
+ >>> thread = api.upsert_instrument_event_instructions_with_http_info(scope, code, success_mode, request_body, portfolio_effective_at, async_req=True)
5001
+ >>> result = thread.get()
5002
+
5003
+ :param scope: The scope of the portfolio. (required)
5004
+ :type scope: str
5005
+ :param code: The code of the portfolio. Together with the scope this uniquely identifies the portfolio. (required)
5006
+ :type code: str
5007
+ :param success_mode: Whether the batch request should fail atomically or in a partial fashion - allowed values: Atomic, Partial (default) (required)
5008
+ :type success_mode: str
5009
+ :param request_body: The instructions to be upserted to the portfolio. (required)
5010
+ :type request_body: Dict[str, InstrumentEventInstructionRequest]
5011
+ :param portfolio_effective_at: The effective date at which the portfolio will be resolved. Defaults to current time if not specified.
5012
+ :type portfolio_effective_at: str
5013
+ :param async_req: Whether to execute the request asynchronously.
5014
+ :type async_req: bool, optional
5015
+ :param _preload_content: if False, the ApiResponse.data will
5016
+ be set to none and raw_data will store the
5017
+ HTTP response body without reading/decoding.
5018
+ Default is True.
5019
+ :type _preload_content: bool, optional
5020
+ :param _return_http_data_only: response data instead of ApiResponse
5021
+ object with status code, headers, etc
5022
+ :type _return_http_data_only: bool, optional
5023
+ :param _request_timeout: timeout setting for this request. If one
5024
+ number provided, it will be total request
5025
+ timeout. It can also be a pair (tuple) of
5026
+ (connection, read) timeouts.
5027
+ :param _request_auth: set to override the auth_settings for an a single
5028
+ request; this effectively ignores the authentication
5029
+ in the spec for a single request.
5030
+ :type _request_auth: dict, optional
5031
+ :type _content_type: string, optional: force content-type for the request
5032
+ :return: Returns the result object.
5033
+ If the method is called asynchronously,
5034
+ returns the request thread.
5035
+ :rtype: tuple(InstrumentEventInstructionsResponse, status_code(int), headers(HTTPHeaderDict))
5036
+ """
5037
+
5038
+ _params = locals()
5039
+
5040
+ _all_params = [
5041
+ 'scope',
5042
+ 'code',
5043
+ 'success_mode',
5044
+ 'request_body',
5045
+ 'portfolio_effective_at'
5046
+ ]
5047
+ _all_params.extend(
5048
+ [
5049
+ 'async_req',
5050
+ '_return_http_data_only',
5051
+ '_preload_content',
5052
+ '_request_timeout',
5053
+ '_request_auth',
5054
+ '_content_type',
5055
+ '_headers'
5056
+ ]
5057
+ )
5058
+
5059
+ # validate the arguments
5060
+ for _key, _val in _params['kwargs'].items():
5061
+ if _key not in _all_params:
5062
+ raise ApiTypeError(
5063
+ "Got an unexpected keyword argument '%s'"
5064
+ " to method upsert_instrument_event_instructions" % _key
5065
+ )
5066
+ _params[_key] = _val
5067
+ del _params['kwargs']
5068
+
5069
+ _collection_formats = {}
5070
+
5071
+ # process the path parameters
5072
+ _path_params = {}
5073
+ if _params['scope']:
5074
+ _path_params['scope'] = _params['scope']
5075
+
5076
+ if _params['code']:
5077
+ _path_params['code'] = _params['code']
5078
+
5079
+
5080
+ # process the query parameters
5081
+ _query_params = []
5082
+ if _params.get('portfolio_effective_at') is not None: # noqa: E501
5083
+ _query_params.append(('portfolioEffectiveAt', _params['portfolio_effective_at']))
5084
+
5085
+ if _params.get('success_mode') is not None: # noqa: E501
5086
+ _query_params.append(('successMode', _params['success_mode']))
5087
+
5088
+ # process the header parameters
5089
+ _header_params = dict(_params.get('_headers', {}))
5090
+ # process the form parameters
5091
+ _form_params = []
5092
+ _files = {}
5093
+ # process the body parameter
5094
+ _body_params = None
5095
+ if _params['request_body'] is not None:
5096
+ _body_params = _params['request_body']
5097
+
5098
+ # set the HTTP header `Accept`
5099
+ _header_params['Accept'] = self.api_client.select_header_accept(
5100
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
5101
+
5102
+ # set the HTTP header `Content-Type`
5103
+ _content_types_list = _params.get('_content_type',
5104
+ self.api_client.select_header_content_type(
5105
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
5106
+ if _content_types_list:
5107
+ _header_params['Content-Type'] = _content_types_list
5108
+
5109
+ # authentication setting
5110
+ _auth_settings = ['oauth2'] # noqa: E501
5111
+
5112
+ _response_types_map = {
5113
+ '200': "InstrumentEventInstructionsResponse",
5114
+ '400': "LusidValidationProblemDetails",
5115
+ }
5116
+
5117
+ return self.api_client.call_api(
5118
+ '/api/portfolios/{scope}/{code}/instrumenteventinstructions', 'POST',
5119
+ _path_params,
5120
+ _query_params,
5121
+ _header_params,
5122
+ body=_body_params,
5123
+ post_params=_form_params,
5124
+ files=_files,
5125
+ response_types_map=_response_types_map,
5126
+ auth_settings=_auth_settings,
5127
+ async_req=_params.get('async_req'),
5128
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
5129
+ _preload_content=_params.get('_preload_content', True),
5130
+ _request_timeout=_params.get('_request_timeout'),
5131
+ collection_formats=_collection_formats,
5132
+ _request_auth=_params.get('_request_auth'))
5133
+
4580
5134
  @overload
4581
5135
  async def upsert_portfolio_access_metadata(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope to use when updating or inserting the Portfolio Access Metadata Rule.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Portfolio code")], metadata_key : Annotated[constr(strict=True, max_length=256, min_length=1), Field(..., description="Key of the access metadata to upsert")], upsert_portfolio_access_metadata_request : Annotated[UpsertPortfolioAccessMetadataRequest, Field(..., description="The Portfolio Access Metadata Rule to update or insert")], effective_at : Annotated[Optional[StrictStr], Field(description="The date this rule will effective from")] = None, effective_until : Annotated[Optional[datetime], Field(description="The effective date until which the Access Metadata is valid. If not supplied this will be valid indefinitely, or until the next 'effectiveAt' date of the Access Metadata")] = None, **kwargs) -> ResourceListOfAccessMetadataValueOf: # noqa: E501
4582
5136
  ...
@@ -52,15 +52,15 @@ class StagedModificationsApi:
52
52
  self.api_client = api_client
53
53
 
54
54
  @overload
55
- async def add_decision(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], **kwargs) -> StagedModification: # noqa: E501
55
+ async def add_decision(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], **kwargs) -> StagedModification: # noqa: E501
56
56
  ...
57
57
 
58
58
  @overload
59
- def add_decision(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], async_req: Optional[bool]=True, **kwargs) -> StagedModification: # noqa: E501
59
+ def add_decision(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], async_req: Optional[bool]=True, **kwargs) -> StagedModification: # noqa: E501
60
60
  ...
61
61
 
62
62
  @validate_arguments
63
- def add_decision(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], async_req: Optional[bool]=None, **kwargs) -> Union[StagedModification, Awaitable[StagedModification]]: # noqa: E501
63
+ def add_decision(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], async_req: Optional[bool]=None, **kwargs) -> Union[StagedModification, Awaitable[StagedModification]]: # noqa: E501
64
64
  """[EXPERIMENTAL] AddDecision: AddDecision # noqa: E501
65
65
 
66
66
  Add decision to staged modification, Approve or Reject. # noqa: E501
@@ -94,7 +94,7 @@ class StagedModificationsApi:
94
94
  return self.add_decision_with_http_info(id, staged_modification_decision_request, **kwargs) # noqa: E501
95
95
 
96
96
  @validate_arguments
97
- def add_decision_with_http_info(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], **kwargs) -> ApiResponse: # noqa: E501
97
+ def add_decision_with_http_info(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], staged_modification_decision_request : Annotated[StagedModificationDecisionRequest, Field(..., description="The decision on the requested staged modification, \"Approve\" or \"Reject\".")], **kwargs) -> ApiResponse: # noqa: E501
98
98
  """[EXPERIMENTAL] AddDecision: AddDecision # noqa: E501
99
99
 
100
100
  Add decision to staged modification, Approve or Reject. # noqa: E501
@@ -218,15 +218,15 @@ class StagedModificationsApi:
218
218
  _request_auth=_params.get('_request_auth'))
219
219
 
220
220
  @overload
221
- async def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, **kwargs) -> StagedModification: # noqa: E501
221
+ async def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, **kwargs) -> StagedModification: # noqa: E501
222
222
  ...
223
223
 
224
224
  @overload
225
- def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> StagedModification: # noqa: E501
225
+ def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> StagedModification: # noqa: E501
226
226
  ...
227
227
 
228
228
  @validate_arguments
229
- def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[StagedModification, Awaitable[StagedModification]]: # noqa: E501
229
+ def get_staged_modification(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[StagedModification, Awaitable[StagedModification]]: # noqa: E501
230
230
  """[EXPERIMENTAL] GetStagedModification: GetStagedModification # noqa: E501
231
231
 
232
232
  Retrieve the details of a staged modification. # noqa: E501
@@ -260,7 +260,7 @@ class StagedModificationsApi:
260
260
  return self.get_staged_modification_with_http_info(id, as_at, **kwargs) # noqa: E501
261
261
 
262
262
  @validate_arguments
263
- def get_staged_modification_with_http_info(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
263
+ def get_staged_modification_with_http_info(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="The unique identifier for a staged modification.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the staged modification. Defaults to latest if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
264
264
  """[EXPERIMENTAL] GetStagedModification: GetStagedModification # noqa: E501
265
265
 
266
266
  Retrieve the details of a staged modification. # noqa: E501
@@ -380,15 +380,15 @@ class StagedModificationsApi:
380
380
  _request_auth=_params.get('_request_auth'))
381
381
 
382
382
  @overload
383
- async def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> PagedResourceListOfStagedModificationsRequestedChangeInterval: # noqa: E501
383
+ async def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> PagedResourceListOfStagedModificationsRequestedChangeInterval: # noqa: E501
384
384
  ...
385
385
 
386
386
  @overload
387
- def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfStagedModificationsRequestedChangeInterval: # noqa: E501
387
+ def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfStagedModificationsRequestedChangeInterval: # noqa: E501
388
388
  ...
389
389
 
390
390
  @validate_arguments
391
- def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfStagedModificationsRequestedChangeInterval, Awaitable[PagedResourceListOfStagedModificationsRequestedChangeInterval]]: # noqa: E501
391
+ def list_requested_changes(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfStagedModificationsRequestedChangeInterval, Awaitable[PagedResourceListOfStagedModificationsRequestedChangeInterval]]: # noqa: E501
392
392
  """[EXPERIMENTAL] ListRequestedChanges: ListRequestedChanges # noqa: E501
393
393
 
394
394
  List the requested changes for a staged modification. # noqa: E501
@@ -430,7 +430,7 @@ class StagedModificationsApi:
430
430
  return self.list_requested_changes_with_http_info(id, as_at, page, limit, filter, sort_by, **kwargs) # noqa: E501
431
431
 
432
432
  @validate_arguments
433
- def list_requested_changes_with_http_info(self, id : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> ApiResponse: # noqa: E501
433
+ def list_requested_changes_with_http_info(self, id : Annotated[constr(strict=True, max_length=40, min_length=30), Field(..., description="Unique Id for a staged modification..")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list changes. Defaults to return the latest version of each staged change 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 requested staged modification changes from a previous call to list requested staged modifications. 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 number of returned results to this many. 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 result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> ApiResponse: # noqa: E501
434
434
  """[EXPERIMENTAL] ListRequestedChanges: ListRequestedChanges # noqa: E501
435
435
 
436
436
  List the requested changes for a staged modification. # noqa: E501
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.6526\n"\
376
+ "Version of the API: 0.11.6529\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
lusid/models/__init__.py CHANGED
@@ -396,6 +396,9 @@ from lusid.models.instrument_delete_modes import InstrumentDeleteModes
396
396
  from lusid.models.instrument_event import InstrumentEvent
397
397
  from lusid.models.instrument_event_configuration import InstrumentEventConfiguration
398
398
  from lusid.models.instrument_event_holder import InstrumentEventHolder
399
+ from lusid.models.instrument_event_instruction import InstrumentEventInstruction
400
+ from lusid.models.instrument_event_instruction_request import InstrumentEventInstructionRequest
401
+ from lusid.models.instrument_event_instructions_response import InstrumentEventInstructionsResponse
399
402
  from lusid.models.instrument_event_type import InstrumentEventType
400
403
  from lusid.models.instrument_id_type_descriptor import InstrumentIdTypeDescriptor
401
404
  from lusid.models.instrument_id_value import InstrumentIdValue
@@ -1350,6 +1353,9 @@ __all__ = [
1350
1353
  "InstrumentEvent",
1351
1354
  "InstrumentEventConfiguration",
1352
1355
  "InstrumentEventHolder",
1356
+ "InstrumentEventInstruction",
1357
+ "InstrumentEventInstructionRequest",
1358
+ "InstrumentEventInstructionsResponse",
1353
1359
  "InstrumentEventType",
1354
1360
  "InstrumentIdTypeDescriptor",
1355
1361
  "InstrumentIdValue",
@@ -0,0 +1,121 @@
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, StrictInt, StrictStr
23
+ from lusid.models.resource_id import ResourceId
24
+ from lusid.models.version import Version
25
+
26
+ class InstrumentEventInstruction(BaseModel):
27
+ """
28
+ An instruction for an instrument event # noqa: E501
29
+ """
30
+ instrument_event_instruction_id: Optional[StrictStr] = Field(None, alias="instrumentEventInstructionId", description="The unique identifier for this instruction")
31
+ portfolio_id: Optional[ResourceId] = Field(None, alias="portfolioId")
32
+ instrument_event_id: Optional[StrictStr] = Field(None, alias="instrumentEventId", description="The identifier of the instrument event being instructed")
33
+ instruction_type: Optional[StrictStr] = Field(None, alias="instructionType", description="The type of instruction (Ignore, ElectForPortfolio, ElectForHolding)")
34
+ election_key: Optional[StrictStr] = Field(None, alias="electionKey", description="For elected instructions, the key to be chosen")
35
+ holding_id: Optional[StrictInt] = Field(None, alias="holdingId", description="For holding instructions, the id of the holding for which the instruction will apply")
36
+ version: Optional[Version] = None
37
+ href: Optional[StrictStr] = Field(None, description="The uri for this version of this instruction")
38
+ __properties = ["instrumentEventInstructionId", "portfolioId", "instrumentEventId", "instructionType", "electionKey", "holdingId", "version", "href"]
39
+
40
+ class Config:
41
+ """Pydantic configuration"""
42
+ allow_population_by_field_name = True
43
+ validate_assignment = True
44
+
45
+ def to_str(self) -> str:
46
+ """Returns the string representation of the model using alias"""
47
+ return pprint.pformat(self.dict(by_alias=True))
48
+
49
+ def to_json(self) -> str:
50
+ """Returns the JSON representation of the model using alias"""
51
+ return json.dumps(self.to_dict())
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> InstrumentEventInstruction:
55
+ """Create an instance of InstrumentEventInstruction from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self):
59
+ """Returns the dictionary representation of the model using alias"""
60
+ _dict = self.dict(by_alias=True,
61
+ exclude={
62
+ },
63
+ exclude_none=True)
64
+ # override the default output from pydantic by calling `to_dict()` of portfolio_id
65
+ if self.portfolio_id:
66
+ _dict['portfolioId'] = self.portfolio_id.to_dict()
67
+ # override the default output from pydantic by calling `to_dict()` of version
68
+ if self.version:
69
+ _dict['version'] = self.version.to_dict()
70
+ # set to None if instrument_event_instruction_id (nullable) is None
71
+ # and __fields_set__ contains the field
72
+ if self.instrument_event_instruction_id is None and "instrument_event_instruction_id" in self.__fields_set__:
73
+ _dict['instrumentEventInstructionId'] = None
74
+
75
+ # set to None if instrument_event_id (nullable) is None
76
+ # and __fields_set__ contains the field
77
+ if self.instrument_event_id is None and "instrument_event_id" in self.__fields_set__:
78
+ _dict['instrumentEventId'] = None
79
+
80
+ # set to None if instruction_type (nullable) is None
81
+ # and __fields_set__ contains the field
82
+ if self.instruction_type is None and "instruction_type" in self.__fields_set__:
83
+ _dict['instructionType'] = None
84
+
85
+ # set to None if election_key (nullable) is None
86
+ # and __fields_set__ contains the field
87
+ if self.election_key is None and "election_key" in self.__fields_set__:
88
+ _dict['electionKey'] = None
89
+
90
+ # set to None if holding_id (nullable) is None
91
+ # and __fields_set__ contains the field
92
+ if self.holding_id is None and "holding_id" in self.__fields_set__:
93
+ _dict['holdingId'] = None
94
+
95
+ # set to None if href (nullable) is None
96
+ # and __fields_set__ contains the field
97
+ if self.href is None and "href" in self.__fields_set__:
98
+ _dict['href'] = None
99
+
100
+ return _dict
101
+
102
+ @classmethod
103
+ def from_dict(cls, obj: dict) -> InstrumentEventInstruction:
104
+ """Create an instance of InstrumentEventInstruction from a dict"""
105
+ if obj is None:
106
+ return None
107
+
108
+ if not isinstance(obj, dict):
109
+ return InstrumentEventInstruction.parse_obj(obj)
110
+
111
+ _obj = InstrumentEventInstruction.parse_obj({
112
+ "instrument_event_instruction_id": obj.get("instrumentEventInstructionId"),
113
+ "portfolio_id": ResourceId.from_dict(obj.get("portfolioId")) if obj.get("portfolioId") is not None else None,
114
+ "instrument_event_id": obj.get("instrumentEventId"),
115
+ "instruction_type": obj.get("instructionType"),
116
+ "election_key": obj.get("electionKey"),
117
+ "holding_id": obj.get("holdingId"),
118
+ "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None else None,
119
+ "href": obj.get("href")
120
+ })
121
+ return _obj
@@ -0,0 +1,87 @@
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, StrictInt, StrictStr, constr
23
+
24
+ class InstrumentEventInstructionRequest(BaseModel):
25
+ """
26
+ The request to create an instruction for an instrument event # noqa: E501
27
+ """
28
+ instrument_event_instruction_id: constr(strict=True, min_length=1) = Field(..., alias="instrumentEventInstructionId", description="The unique identifier for this instruction")
29
+ instrument_event_id: constr(strict=True, min_length=1) = Field(..., alias="instrumentEventId", description="The identifier of the instrument event being instructed")
30
+ instruction_type: constr(strict=True, min_length=1) = Field(..., alias="instructionType", description="The type of instruction (Ignore, ElectForPortfolio, ElectForHolding)")
31
+ election_key: Optional[StrictStr] = Field(None, alias="electionKey", description="For elected instructions, the key to be chosen")
32
+ holding_id: Optional[StrictInt] = Field(None, alias="holdingId", description="For holding instructions, the id of the holding for which the instruction will apply")
33
+ __properties = ["instrumentEventInstructionId", "instrumentEventId", "instructionType", "electionKey", "holdingId"]
34
+
35
+ class Config:
36
+ """Pydantic configuration"""
37
+ allow_population_by_field_name = True
38
+ validate_assignment = True
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.dict(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ return json.dumps(self.to_dict())
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> InstrumentEventInstructionRequest:
50
+ """Create an instance of InstrumentEventInstructionRequest from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self):
54
+ """Returns the dictionary representation of the model using alias"""
55
+ _dict = self.dict(by_alias=True,
56
+ exclude={
57
+ },
58
+ exclude_none=True)
59
+ # set to None if election_key (nullable) is None
60
+ # and __fields_set__ contains the field
61
+ if self.election_key is None and "election_key" in self.__fields_set__:
62
+ _dict['electionKey'] = None
63
+
64
+ # set to None if holding_id (nullable) is None
65
+ # and __fields_set__ contains the field
66
+ if self.holding_id is None and "holding_id" in self.__fields_set__:
67
+ _dict['holdingId'] = None
68
+
69
+ return _dict
70
+
71
+ @classmethod
72
+ def from_dict(cls, obj: dict) -> InstrumentEventInstructionRequest:
73
+ """Create an instance of InstrumentEventInstructionRequest from a dict"""
74
+ if obj is None:
75
+ return None
76
+
77
+ if not isinstance(obj, dict):
78
+ return InstrumentEventInstructionRequest.parse_obj(obj)
79
+
80
+ _obj = InstrumentEventInstructionRequest.parse_obj({
81
+ "instrument_event_instruction_id": obj.get("instrumentEventInstructionId"),
82
+ "instrument_event_id": obj.get("instrumentEventId"),
83
+ "instruction_type": obj.get("instructionType"),
84
+ "election_key": obj.get("electionKey"),
85
+ "holding_id": obj.get("holdingId")
86
+ })
87
+ return _obj
@@ -0,0 +1,107 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.error_detail import ErrorDetail
24
+ from lusid.models.instrument_event_instruction import InstrumentEventInstruction
25
+
26
+ class InstrumentEventInstructionsResponse(BaseModel):
27
+ """
28
+ The collection of successfully upserted instructions, and the collection of failures for those instructions that could not be upserted # noqa: E501
29
+ """
30
+ values: Optional[Dict[str, InstrumentEventInstruction]] = Field(None, description="The collection of successfully upserted instructions")
31
+ failed: Optional[Dict[str, ErrorDetail]] = Field(None, description="The collection of error information for instructions that could not be upserted")
32
+ __properties = ["values", "failed"]
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) -> InstrumentEventInstructionsResponse:
49
+ """Create an instance of InstrumentEventInstructionsResponse 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 values (dict)
59
+ _field_dict = {}
60
+ if self.values:
61
+ for _key in self.values:
62
+ if self.values[_key]:
63
+ _field_dict[_key] = self.values[_key].to_dict()
64
+ _dict['values'] = _field_dict
65
+ # override the default output from pydantic by calling `to_dict()` of each value in failed (dict)
66
+ _field_dict = {}
67
+ if self.failed:
68
+ for _key in self.failed:
69
+ if self.failed[_key]:
70
+ _field_dict[_key] = self.failed[_key].to_dict()
71
+ _dict['failed'] = _field_dict
72
+ # set to None if values (nullable) is None
73
+ # and __fields_set__ contains the field
74
+ if self.values is None and "values" in self.__fields_set__:
75
+ _dict['values'] = None
76
+
77
+ # set to None if failed (nullable) is None
78
+ # and __fields_set__ contains the field
79
+ if self.failed is None and "failed" in self.__fields_set__:
80
+ _dict['failed'] = None
81
+
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: dict) -> InstrumentEventInstructionsResponse:
86
+ """Create an instance of InstrumentEventInstructionsResponse from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return InstrumentEventInstructionsResponse.parse_obj(obj)
92
+
93
+ _obj = InstrumentEventInstructionsResponse.parse_obj({
94
+ "values": dict(
95
+ (_k, InstrumentEventInstruction.from_dict(_v))
96
+ for _k, _v in obj.get("values").items()
97
+ )
98
+ if obj.get("values") is not None
99
+ else None,
100
+ "failed": dict(
101
+ (_k, ErrorDetail.from_dict(_v))
102
+ for _k, _v in obj.get("failed").items()
103
+ )
104
+ if obj.get("failed") is not None
105
+ else None
106
+ })
107
+ return _obj
lusid/models/version.py CHANGED
@@ -60,7 +60,6 @@ class Version(BaseModel):
60
60
  """Returns the dictionary representation of the model using alias"""
61
61
  _dict = self.dict(by_alias=True,
62
62
  exclude={
63
- "staged_modification_id_modified",
64
63
  },
65
64
  exclude_none=True)
66
65
  # set to None if as_at_created (nullable) is None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.91
3
+ Version: 2.1.95
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -29,8 +29,8 @@ FINBOURNE Technology
29
29
 
30
30
  This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
31
31
 
32
- - API version: 0.11.6526
33
- - Package version: 2.1.91
32
+ - API version: 0.11.6529
33
+ - Package version: 2.1.95
34
34
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
35
35
  For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
36
36
 
@@ -533,12 +533,14 @@ Class | Method | HTTP request | Description
533
533
  *PortfolioGroupsApi* | [**update_portfolio_group**](docs/PortfolioGroupsApi.md#update_portfolio_group) | **PUT** /api/portfoliogroups/{scope}/{code} | [EARLY ACCESS] UpdatePortfolioGroup: Update portfolio group
534
534
  *PortfolioGroupsApi* | [**upsert_group_properties**](docs/PortfolioGroupsApi.md#upsert_group_properties) | **POST** /api/portfoliogroups/{scope}/{code}/properties/$upsert | [EARLY ACCESS] UpsertGroupProperties: Upsert group properties
535
535
  *PortfolioGroupsApi* | [**upsert_portfolio_group_access_metadata**](docs/PortfolioGroupsApi.md#upsert_portfolio_group_access_metadata) | **PUT** /api/portfoliogroups/{scope}/{code}/metadata/{metadataKey} | [EARLY ACCESS] UpsertPortfolioGroupAccessMetadata: Upsert a Portfolio Group Access Metadata entry associated with a specific metadataKey. This creates or updates the data in LUSID.
536
+ *PortfoliosApi* | [**delete_instrument_event_instruction**](docs/PortfoliosApi.md#delete_instrument_event_instruction) | **DELETE** /api/portfolios/{scope}/{code}/instrumenteventinstructions/{instrumentEventInstructionId} | [EARLY ACCESS] DeleteInstrumentEventInstruction: Delete Instrument Event Instruction
536
537
  *PortfoliosApi* | [**delete_key_from_portfolio_access_metadata**](docs/PortfoliosApi.md#delete_key_from_portfolio_access_metadata) | **DELETE** /api/portfolios/{scope}/{code}/metadata/{metadataKey} | [EARLY ACCESS] DeleteKeyFromPortfolioAccessMetadata: Delete a Portfolio Access Metadata Rule
537
538
  *PortfoliosApi* | [**delete_portfolio**](docs/PortfoliosApi.md#delete_portfolio) | **DELETE** /api/portfolios/{scope}/{code} | DeletePortfolio: Delete portfolio
538
539
  *PortfoliosApi* | [**delete_portfolio_properties**](docs/PortfoliosApi.md#delete_portfolio_properties) | **DELETE** /api/portfolios/{scope}/{code}/properties | DeletePortfolioProperties: Delete portfolio properties
539
540
  *PortfoliosApi* | [**delete_portfolio_returns**](docs/PortfoliosApi.md#delete_portfolio_returns) | **DELETE** /api/portfolios/{scope}/{code}/returns/{returnScope}/{returnCode}/$delete | [EARLY ACCESS] DeletePortfolioReturns: Delete Returns
540
541
  *PortfoliosApi* | [**get_aggregated_returns_dispersion_metrics**](docs/PortfoliosApi.md#get_aggregated_returns_dispersion_metrics) | **POST** /api/portfolios/{scope}/{code}/returns/dispersion/$aggregated | [EARLY ACCESS] GetAggregatedReturnsDispersionMetrics: Get the Aggregated Returns Dispersion metric
541
542
  *PortfoliosApi* | [**get_composite_breakdown**](docs/PortfoliosApi.md#get_composite_breakdown) | **POST** /api/portfolios/{scope}/{code}/returns/breakdown | [EARLY ACCESS] GetCompositeBreakdown: Get the Composite Breakdown on how the composite Returns are calculated
543
+ *PortfoliosApi* | [**get_instrument_event_instruction**](docs/PortfoliosApi.md#get_instrument_event_instruction) | **GET** /api/portfolios/{scope}/{code}/instrumenteventinstructions/{instrumentEventInstructionId} | [EARLY ACCESS] GetInstrumentEventInstruction: Get Instrument Event Instruction
542
544
  *PortfoliosApi* | [**get_portfolio**](docs/PortfoliosApi.md#get_portfolio) | **GET** /api/portfolios/{scope}/{code} | GetPortfolio: Get portfolio
543
545
  *PortfoliosApi* | [**get_portfolio_aggregate_returns**](docs/PortfoliosApi.md#get_portfolio_aggregate_returns) | **GET** /api/portfolios/{scope}/{code}/returns/{returnScope}/{returnCode}/aggregated | [DEPRECATED] GetPortfolioAggregateReturns: Aggregate Returns (This is a deprecated endpoint).
544
546
  *PortfoliosApi* | [**get_portfolio_aggregated_returns**](docs/PortfoliosApi.md#get_portfolio_aggregated_returns) | **POST** /api/portfolios/{scope}/{code}/returns/$aggregated | [EARLY ACCESS] GetPortfolioAggregatedReturns: Aggregated Returns
@@ -556,6 +558,7 @@ Class | Method | HTTP request | Description
556
558
  *PortfoliosApi* | [**patch_portfolio**](docs/PortfoliosApi.md#patch_portfolio) | **PATCH** /api/portfolios/{scope}/{code} | [EARLY ACCESS] PatchPortfolio: Patch portfolio.
557
559
  *PortfoliosApi* | [**patch_portfolio_access_metadata**](docs/PortfoliosApi.md#patch_portfolio_access_metadata) | **PATCH** /api/portfolios/{scope}/{code}/metadata | [EARLY ACCESS] PatchPortfolioAccessMetadata: Patch Access Metadata rules for a Portfolio.
558
560
  *PortfoliosApi* | [**update_portfolio**](docs/PortfoliosApi.md#update_portfolio) | **PUT** /api/portfolios/{scope}/{code} | UpdatePortfolio: Update portfolio
561
+ *PortfoliosApi* | [**upsert_instrument_event_instructions**](docs/PortfoliosApi.md#upsert_instrument_event_instructions) | **POST** /api/portfolios/{scope}/{code}/instrumenteventinstructions | [EARLY ACCESS] UpsertInstrumentEventInstructions: Upsert Instrument Event Instructions
559
562
  *PortfoliosApi* | [**upsert_portfolio_access_metadata**](docs/PortfoliosApi.md#upsert_portfolio_access_metadata) | **PUT** /api/portfolios/{scope}/{code}/metadata/{metadataKey} | [EARLY ACCESS] UpsertPortfolioAccessMetadata: Upsert a Portfolio Access Metadata Rule associated with specific metadataKey. This creates or updates the data in LUSID.
560
563
  *PortfoliosApi* | [**upsert_portfolio_properties**](docs/PortfoliosApi.md#upsert_portfolio_properties) | **POST** /api/portfolios/{scope}/{code}/properties | UpsertPortfolioProperties: Upsert portfolio properties
561
564
  *PortfoliosApi* | [**upsert_portfolio_returns**](docs/PortfoliosApi.md#upsert_portfolio_returns) | **POST** /api/portfolios/{scope}/{code}/returns/{returnScope}/{returnCode} | [EARLY ACCESS] UpsertPortfolioReturns: Upsert Returns
@@ -1107,6 +1110,9 @@ Class | Method | HTTP request | Description
1107
1110
  - [InstrumentEvent](docs/InstrumentEvent.md)
1108
1111
  - [InstrumentEventConfiguration](docs/InstrumentEventConfiguration.md)
1109
1112
  - [InstrumentEventHolder](docs/InstrumentEventHolder.md)
1113
+ - [InstrumentEventInstruction](docs/InstrumentEventInstruction.md)
1114
+ - [InstrumentEventInstructionRequest](docs/InstrumentEventInstructionRequest.md)
1115
+ - [InstrumentEventInstructionsResponse](docs/InstrumentEventInstructionsResponse.md)
1110
1116
  - [InstrumentEventType](docs/InstrumentEventType.md)
1111
1117
  - [InstrumentIdTypeDescriptor](docs/InstrumentIdTypeDescriptor.md)
1112
1118
  - [InstrumentIdValue](docs/InstrumentIdValue.md)
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=kUQ86K5EIATqlM7bT9DcHrRgR_arIWfyJiML8prSo5c,105952
1
+ lusid/__init__.py,sha256=1dSFoT3FllIoodcLFnRFJbNZGUPn3vkgnEQCt5Rg46M,106347
2
2
  lusid/api/__init__.py,sha256=nso_7bPeEC07g5iyuaKlm-DEjA39UZFgkwKoPe4lJQY,5488
3
3
  lusid/api/abor_api.py,sha256=AvgsHuWE7qRSYJhKveBE2htSjHpqqS0VNJrysAfwME0,159655
4
4
  lusid/api/abor_configuration_api.py,sha256=G2bKPtMYOZ2GhUrg-nPJtCa9XIZdZYK7oafcbJWDMP8,64033
@@ -39,7 +39,7 @@ lusid/api/participations_api.py,sha256=nlVzeyfE33X9Ue9HC9rqCW3WACEPKBvcrEjFEmT8w
39
39
  lusid/api/persons_api.py,sha256=0ZUZykUD46ow8j6sXjqaxCTylzUkssOyimAxCoDMUb4,247306
40
40
  lusid/api/placements_api.py,sha256=bsX7VHZlvnxJiZ3ZPtlJ8md_exerU-Qa_BkHGVRphH8,45797
41
41
  lusid/api/portfolio_groups_api.py,sha256=GkR-rjb4khpRsT_3rTkQnWx8z9dczaT2UxYda7xZyCA,378953
42
- lusid/api/portfolios_api.py,sha256=WjAWZYvMJPNa3VKWYbVXjYO5Duz89Rrz6CfCy0vwUKw,366937
42
+ lusid/api/portfolios_api.py,sha256=5NL3-HPP7FyZd3mODdVVzAZjsmL2Udh96QdWlr5nIrg,403923
43
43
  lusid/api/property_definitions_api.py,sha256=Z2HQywmPS1T5DGOCr4BEWX2QmUVhuqLnQSEa4hZZwxo,140397
44
44
  lusid/api/queryable_keys_api.py,sha256=1HafmN22bU1bV5H5nua8EZ5oL0pe0LZ5xkVDQTDSezg,10281
45
45
  lusid/api/quotes_api.py,sha256=Lmb8CSqm7wytZcARzahdB2eBwxkCqrjvzpIKK-H6w34,115625
@@ -55,7 +55,7 @@ lusid/api/scopes_api.py,sha256=p8OnCyJtsYrM0I-jzmHfhMJKAXzWkl52LtGVQw5DMtc,16390
55
55
  lusid/api/scripted_translation_api.py,sha256=jOeKhCjDpq3M1FU9mAH-2sbW_O3NhVuirKPtJrDbEgo,84048
56
56
  lusid/api/search_api.py,sha256=Y6wgyv5H6EDEICDYERU_jXdAFmr0GPEe8r2BnM0KzXI,58533
57
57
  lusid/api/sequences_api.py,sha256=NUACzaG_zcloEMFwuIxI2c2MiQNmkBULUq7qeNvZ0GQ,37460
58
- lusid/api/staged_modifications_api.py,sha256=bIxy3gMkPUaxCZ13A_pBO-2_9Xk2aPMKFJvo2c4mgCY,48673
58
+ lusid/api/staged_modifications_api.py,sha256=O1DexPywa_Y5e8kUOU5yWE4YxCZPq2czEWWlsPcaFrA,48685
59
59
  lusid/api/staging_rule_set_api.py,sha256=9KCTPEZsTtVeKNN9tcEuSICwWQG3z9aHd1aKY4EZsys,49946
60
60
  lusid/api/structured_result_data_api.py,sha256=wD8NaDLKu2PrTm0mu3ZTvit8o1GtVNmwI11kPwojEEY,112489
61
61
  lusid/api/system_configuration_api.py,sha256=aOgevINKgf3CDjXN4cW6R-eoTYfvz8me_wVHOWtqTLY,62054
@@ -66,7 +66,7 @@ lusid/api/transaction_portfolios_api.py,sha256=q6AoYasxV3LQDossmM2BdJSo3arh526yU
66
66
  lusid/api/translation_api.py,sha256=xTAaKEW96JTDIZBXCjxSguCa7Gz4oVd5jdObUE2egwo,20092
67
67
  lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
68
68
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
69
- lusid/configuration.py,sha256=ZKEVUcuw7XqxDu-1epO9VMK5CLzaB91BsIJVaGA4FIE,14404
69
+ lusid/configuration.py,sha256=ZNoZDxkEKHXHiv5xhFS1zg1DS6CIdamMC9ALl_Qq6G0,14404
70
70
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
71
71
  lusid/extensions/__init__.py,sha256=DeUuQP7yTcklJH7LT-bw9wQhKEggcs1KwQbPbFcOlhw,560
72
72
  lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
@@ -79,7 +79,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
79
79
  lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
80
80
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
81
81
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
82
- lusid/models/__init__.py,sha256=Az0BTDsQRYlQFBa9pc8t0KCgVHTM9y3kt-6PcaQO2qQ,99507
82
+ lusid/models/__init__.py,sha256=gQY8AIc0XyWZUQsvUvXGD5cYYgAQ8AJU-WNXChh1bPQ,99902
83
83
  lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
84
84
  lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
85
85
  lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
@@ -462,6 +462,9 @@ lusid/models/instrument_delete_modes.py,sha256=pRnKhwXly5wA6KEnvvphzEBS6ThT-iuuh
462
462
  lusid/models/instrument_event.py,sha256=ZlOP2c75Jp_bsYrD5_Ac9z5gnEZvXkmbAT22gMwwgt4,6848
463
463
  lusid/models/instrument_event_configuration.py,sha256=KUMoeahiegPFRIMhitVHGYTkBNv9i2eWREigqdTxgqs,2784
464
464
  lusid/models/instrument_event_holder.py,sha256=kbrQ_yd4X9THZo4oLdvB3HeUwJSmeVpOoIOBUy1o7fs,6994
465
+ lusid/models/instrument_event_instruction.py,sha256=euUiqidTQl6Il7KsKvjGs0u1BmaJ8zBpnNWMSXzQ3GY,5464
466
+ lusid/models/instrument_event_instruction_request.py,sha256=uDTvxy3TrTjrLCBl5G-zDEBWuSRYwtXJ_Bzys3NyuH0,3639
467
+ lusid/models/instrument_event_instructions_response.py,sha256=Wr4XI1bNMijF7h1COCze7QXUCbl-nc8fQ3ZTNFGZFGE,3984
465
468
  lusid/models/instrument_event_type.py,sha256=0awnBEQSfnGmwosTh2wS-Q4YqoIWgJtLwOVNC3L5nS4,1698
466
469
  lusid/models/instrument_id_type_descriptor.py,sha256=0p18FCVnh60RF3LiLPOsDgbqAyeGJPn_UETTaII0Dx4,2569
467
470
  lusid/models/instrument_id_value.py,sha256=wWr4npSEr_hpTWDjFf8WhALa4o0NFNPmNKpuxY1S6PI,2220
@@ -1011,7 +1014,7 @@ lusid/models/value_type.py,sha256=jHK4tNBGG6VZsoUobxgcuY59JiMYF7YVSqu_tyYyL8U,12
1011
1014
  lusid/models/vendor_dependency.py,sha256=aoSaZxqR2Sa-oE9DAggXJMoXqnPsej_v1lcmOuwqmsM,4307
1012
1015
  lusid/models/vendor_library.py,sha256=Fx8zktN5UuefXUGb27Pgw-N3grsyVMvjOs_3Lw_S4Ow,812
1013
1016
  lusid/models/vendor_model_rule.py,sha256=lsuNCUYeK86M2S2iJdkTkFzqFBqFOpIutIuV40X9Nlo,6263
1014
- lusid/models/version.py,sha256=_IlO_C6dsWF0rU4duap_dszj2wqPYGm5QvAWP_ZBw5o,6791
1017
+ lusid/models/version.py,sha256=yNxWf0znwc5rhxudpQrMZsvOnXLq-4hxm_SeN2PlGno,6728
1015
1018
  lusid/models/version_summary_dto.py,sha256=EjzyYugLxgsO8_myJU-egpQhRKdYD8AIljKRE2hZh14,3584
1016
1019
  lusid/models/versioned_resource_list_of_a2_b_data_record.py,sha256=3X4yY5NWFUONWvWDFU4y6xne9BTmYIzI4Mh31_Cb0QY,4522
1017
1020
  lusid/models/versioned_resource_list_of_a2_b_movement_record.py,sha256=rTddKkdkTeYGLNi00LwFiyva2i_ayLiNQ3-flIhdj8I,4570
@@ -1033,6 +1036,6 @@ lusid/models/weighted_instruments.py,sha256=1y_y_vw4-LPsbkQx4FOzWdZc5fJnzhVkf1D3
1033
1036
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1034
1037
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1035
1038
  lusid/rest.py,sha256=TNUzQ3yLNT2L053EdR7R0vNzQh2J3TlYD1T56Dye0W0,10138
1036
- lusid_sdk-2.1.91.dist-info/METADATA,sha256=giw7QMQO6OzjMsqZJE3PLggqk5R81JpOHAAXXxTbzUg,182217
1037
- lusid_sdk-2.1.91.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1038
- lusid_sdk-2.1.91.dist-info/RECORD,,
1039
+ lusid_sdk-2.1.95.dist-info/METADATA,sha256=p_eoTP_1k33qnlwUKH8FTEd7v4XWDAbo5Zavy7rhckU,183336
1040
+ lusid_sdk-2.1.95.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1041
+ lusid_sdk-2.1.95.dist-info/RECORD,,