lusid-sdk 2.1.92__py3-none-any.whl → 2.1.110__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (48) hide show
  1. lusid/__init__.py +8 -0
  2. lusid/api/portfolios_api.py +554 -0
  3. lusid/api/staged_modifications_api.py +12 -12
  4. lusid/configuration.py +1 -1
  5. lusid/models/__init__.py +8 -0
  6. lusid/models/account.py +1 -1
  7. lusid/models/accumulation_event.py +3 -3
  8. lusid/models/amortisation_event.py +3 -3
  9. lusid/models/bond_coupon_event.py +3 -3
  10. lusid/models/bond_default_event.py +3 -3
  11. lusid/models/bond_principal_event.py +3 -3
  12. lusid/models/capital_distribution_event.py +117 -0
  13. lusid/models/cash_dividend_event.py +3 -3
  14. lusid/models/cash_flow_event.py +3 -3
  15. lusid/models/close_event.py +3 -3
  16. lusid/models/custodian_account.py +1 -1
  17. lusid/models/custodian_account_request.py +1 -1
  18. lusid/models/dividend_option_event.py +3 -3
  19. lusid/models/dividend_reinvestment_event.py +3 -3
  20. lusid/models/exercise_event.py +3 -3
  21. lusid/models/expiry_event.py +3 -3
  22. lusid/models/fx_forward.py +1 -1
  23. lusid/models/fx_forward_settlement_event.py +3 -3
  24. lusid/models/informational_error_event.py +3 -3
  25. lusid/models/informational_event.py +3 -3
  26. lusid/models/instrument_event.py +6 -5
  27. lusid/models/instrument_event_instruction.py +121 -0
  28. lusid/models/instrument_event_instruction_request.py +87 -0
  29. lusid/models/instrument_event_instructions_response.py +107 -0
  30. lusid/models/instrument_event_type.py +1 -0
  31. lusid/models/maturity_event.py +3 -3
  32. lusid/models/open_event.py +3 -3
  33. lusid/models/raw_vendor_event.py +3 -3
  34. lusid/models/reset_event.py +3 -3
  35. lusid/models/reverse_stock_split_event.py +3 -3
  36. lusid/models/scrip_dividend_event.py +3 -3
  37. lusid/models/staged_modification.py +17 -2
  38. lusid/models/staged_modifications_entity_hrefs.py +19 -4
  39. lusid/models/staged_modifications_requested_change_interval.py +19 -4
  40. lusid/models/staging_rule_set.py +17 -2
  41. lusid/models/stock_dividend_event.py +3 -3
  42. lusid/models/stock_split_event.py +3 -3
  43. lusid/models/transition_event.py +3 -3
  44. lusid/models/trigger_event.py +3 -3
  45. lusid/models/version.py +0 -1
  46. {lusid_sdk-2.1.92.dist-info → lusid_sdk-2.1.110.dist-info}/METADATA +10 -3
  47. {lusid_sdk-2.1.92.dist-info → lusid_sdk-2.1.110.dist-info}/RECORD +48 -44
  48. {lusid_sdk-2.1.92.dist-info → lusid_sdk-2.1.110.dist-info}/WHEEL +0 -0
lusid/__init__.py CHANGED
@@ -180,6 +180,7 @@ from lusid.models.calendar import Calendar
180
180
  from lusid.models.calendar_date import CalendarDate
181
181
  from lusid.models.calendar_dependency import CalendarDependency
182
182
  from lusid.models.cap_floor import CapFloor
183
+ from lusid.models.capital_distribution_event import CapitalDistributionEvent
183
184
  from lusid.models.cash_dependency import CashDependency
184
185
  from lusid.models.cash_dividend_event import CashDividendEvent
185
186
  from lusid.models.cash_election import CashElection
@@ -473,6 +474,9 @@ from lusid.models.instrument_delete_modes import InstrumentDeleteModes
473
474
  from lusid.models.instrument_event import InstrumentEvent
474
475
  from lusid.models.instrument_event_configuration import InstrumentEventConfiguration
475
476
  from lusid.models.instrument_event_holder import InstrumentEventHolder
477
+ from lusid.models.instrument_event_instruction import InstrumentEventInstruction
478
+ from lusid.models.instrument_event_instruction_request import InstrumentEventInstructionRequest
479
+ from lusid.models.instrument_event_instructions_response import InstrumentEventInstructionsResponse
476
480
  from lusid.models.instrument_event_type import InstrumentEventType
477
481
  from lusid.models.instrument_id_type_descriptor import InstrumentIdTypeDescriptor
478
482
  from lusid.models.instrument_id_value import InstrumentIdValue
@@ -1209,6 +1213,7 @@ __all__ = [
1209
1213
  "CalendarDate",
1210
1214
  "CalendarDependency",
1211
1215
  "CapFloor",
1216
+ "CapitalDistributionEvent",
1212
1217
  "CashDependency",
1213
1218
  "CashDividendEvent",
1214
1219
  "CashElection",
@@ -1502,6 +1507,9 @@ __all__ = [
1502
1507
  "InstrumentEvent",
1503
1508
  "InstrumentEventConfiguration",
1504
1509
  "InstrumentEventHolder",
1510
+ "InstrumentEventInstruction",
1511
+ "InstrumentEventInstructionRequest",
1512
+ "InstrumentEventInstructionsResponse",
1505
1513
  "InstrumentEventType",
1506
1514
  "InstrumentIdTypeDescriptor",
1507
1515
  "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
  ...