lusid-sdk 2.1.198__py3-none-any.whl → 2.1.261__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 (167) hide show
  1. lusid/__init__.py +36 -0
  2. lusid/api/__init__.py +2 -0
  3. lusid/api/entities_api.py +360 -0
  4. lusid/api/fee_types_api.py +143 -0
  5. lusid/api/fund_configurations_api.py +944 -0
  6. lusid/api/funds_api.py +8 -16
  7. lusid/api/order_management_api.py +320 -1
  8. lusid/api/persons_api.py +167 -0
  9. lusid/api/portfolios_api.py +2 -2
  10. lusid/configuration.py +1 -1
  11. lusid/extensions/__init__.py +1 -1
  12. lusid/models/__init__.py +34 -0
  13. lusid/models/accounting_method.py +3 -0
  14. lusid/models/accumulation_event.py +3 -3
  15. lusid/models/address_key_compliance_parameter.py +3 -3
  16. lusid/models/address_key_list_compliance_parameter.py +3 -3
  17. lusid/models/amortisation_event.py +3 -3
  18. lusid/models/basket.py +3 -3
  19. lusid/models/bond.py +3 -3
  20. lusid/models/bond_coupon_event.py +3 -3
  21. lusid/models/bond_default_event.py +3 -3
  22. lusid/models/bond_principal_event.py +3 -3
  23. lusid/models/bool_compliance_parameter.py +3 -3
  24. lusid/models/bool_list_compliance_parameter.py +3 -3
  25. lusid/models/branch_step.py +3 -3
  26. lusid/models/branch_step_request.py +10 -3
  27. lusid/models/cancel_placements_response.py +153 -0
  28. lusid/models/cancelled_placement_result.py +83 -0
  29. lusid/models/cap_floor.py +3 -3
  30. lusid/models/capital_distribution_event.py +3 -3
  31. lusid/models/cash_dividend_event.py +3 -3
  32. lusid/models/cash_flow_event.py +3 -3
  33. lusid/models/cash_perpetual.py +3 -3
  34. lusid/models/cds_index.py +3 -3
  35. lusid/models/check_step.py +3 -3
  36. lusid/models/check_step_request.py +10 -3
  37. lusid/models/close_event.py +3 -3
  38. lusid/models/complex_bond.py +3 -3
  39. lusid/models/compliance_parameter.py +6 -5
  40. lusid/models/compliance_parameter_type.py +1 -0
  41. lusid/models/compliance_step.py +6 -5
  42. lusid/models/compliance_step_request.py +7 -6
  43. lusid/models/compliance_step_type.py +1 -0
  44. lusid/models/compliance_step_type_request.py +1 -0
  45. lusid/models/component_rule.py +83 -0
  46. lusid/models/contract_for_difference.py +3 -3
  47. lusid/models/create_derived_property_definition_request.py +3 -3
  48. lusid/models/create_derived_transaction_portfolio_request.py +3 -3
  49. lusid/models/create_property_definition_request.py +3 -3
  50. lusid/models/create_transaction_portfolio_request.py +3 -3
  51. lusid/models/credit_default_swap.py +3 -3
  52. lusid/models/currency_and_amount.py +2 -7
  53. lusid/models/date_time_compliance_parameter.py +3 -3
  54. lusid/models/date_time_list_compliance_parameter.py +3 -3
  55. lusid/models/decimal_compliance_parameter.py +3 -3
  56. lusid/models/decimal_list_compliance_parameter.py +3 -3
  57. lusid/models/dependency_source_filter.py +9 -2
  58. lusid/models/dividend_option_event.py +3 -3
  59. lusid/models/dividend_reinvestment_event.py +3 -3
  60. lusid/models/equity.py +3 -3
  61. lusid/models/equity_option.py +3 -3
  62. lusid/models/equity_swap.py +3 -3
  63. lusid/models/exchange_traded_option.py +3 -3
  64. lusid/models/exercise_event.py +3 -3
  65. lusid/models/exotic_instrument.py +3 -3
  66. lusid/models/expiry_event.py +3 -3
  67. lusid/models/fee.py +1 -15
  68. lusid/models/fee_accrual.py +32 -14
  69. lusid/models/fee_request.py +10 -1
  70. lusid/models/fee_transaction_template_specification.py +79 -0
  71. lusid/models/filter_predicate_compliance_parameter.py +3 -3
  72. lusid/models/filter_step.py +3 -3
  73. lusid/models/filter_step_request.py +10 -3
  74. lusid/models/fixed_leg.py +3 -3
  75. lusid/models/flexible_loan.py +3 -3
  76. lusid/models/floating_leg.py +3 -3
  77. lusid/models/forward_rate_agreement.py +3 -3
  78. lusid/models/fund_configuration.py +150 -0
  79. lusid/models/fund_configuration_properties.py +115 -0
  80. lusid/models/fund_configuration_request.py +130 -0
  81. lusid/models/fund_share_class.py +3 -3
  82. lusid/models/funding_leg.py +3 -3
  83. lusid/models/future.py +3 -3
  84. lusid/models/future_expiry_event.py +100 -0
  85. lusid/models/fx_forward.py +3 -3
  86. lusid/models/fx_forward_settlement_event.py +3 -3
  87. lusid/models/fx_option.py +3 -3
  88. lusid/models/fx_swap.py +3 -3
  89. lusid/models/group_by_selector_compliance_parameter.py +3 -3
  90. lusid/models/group_by_step.py +3 -3
  91. lusid/models/group_by_step_request.py +10 -3
  92. lusid/models/group_calculation_compliance_parameter.py +91 -0
  93. lusid/models/group_filter_predicate_compliance_parameter.py +3 -3
  94. lusid/models/group_filter_step.py +3 -3
  95. lusid/models/group_filter_step_request.py +10 -3
  96. lusid/models/inflation_leg.py +3 -3
  97. lusid/models/inflation_linked_bond.py +3 -3
  98. lusid/models/inflation_swap.py +3 -3
  99. lusid/models/informational_error_event.py +3 -3
  100. lusid/models/informational_event.py +3 -3
  101. lusid/models/instrument.py +7 -1
  102. lusid/models/instrument_entity.py +146 -0
  103. lusid/models/instrument_event.py +6 -5
  104. lusid/models/instrument_event_type.py +1 -0
  105. lusid/models/instrument_leg.py +3 -3
  106. lusid/models/instrument_list_compliance_parameter.py +3 -3
  107. lusid/models/instrument_type.py +2 -0
  108. lusid/models/interest_rate_swap.py +3 -3
  109. lusid/models/interest_rate_swaption.py +3 -3
  110. lusid/models/intermediate_compliance_step.py +3 -3
  111. lusid/models/intermediate_compliance_step_request.py +10 -3
  112. lusid/models/lusid_instrument.py +3 -3
  113. lusid/models/maturity_event.py +3 -3
  114. lusid/models/merger_event.py +3 -3
  115. lusid/models/open_event.py +3 -3
  116. lusid/models/order_flow_configuration.py +1 -1
  117. lusid/models/paged_resource_list_of_fund_configuration.py +113 -0
  118. lusid/models/percent_check_step.py +110 -0
  119. lusid/models/percent_check_step_request.py +98 -0
  120. lusid/models/placement_update_request.py +116 -0
  121. lusid/models/portfolio.py +3 -3
  122. lusid/models/portfolio_details.py +3 -3
  123. lusid/models/portfolio_group_id_compliance_parameter.py +3 -3
  124. lusid/models/portfolio_group_id_list_compliance_parameter.py +3 -3
  125. lusid/models/portfolio_id_compliance_parameter.py +3 -3
  126. lusid/models/portfolio_id_list_compliance_parameter.py +3 -3
  127. lusid/models/portfolio_without_href.py +3 -3
  128. lusid/models/property_definition.py +10 -4
  129. lusid/models/property_definition_entity.py +146 -0
  130. lusid/models/property_definition_search_result.py +3 -3
  131. lusid/models/property_domain.py +34 -0
  132. lusid/models/property_key_compliance_parameter.py +3 -3
  133. lusid/models/property_key_list_compliance_parameter.py +3 -3
  134. lusid/models/property_list_compliance_parameter.py +3 -3
  135. lusid/models/quote_access_metadata_rule_id.py +2 -2
  136. lusid/models/quote_series_id.py +2 -2
  137. lusid/models/raw_vendor_event.py +3 -3
  138. lusid/models/realised_gain_loss.py +2 -2
  139. lusid/models/recombine_step.py +3 -3
  140. lusid/models/reference_instrument.py +3 -3
  141. lusid/models/repo.py +3 -3
  142. lusid/models/reset_event.py +3 -3
  143. lusid/models/reverse_stock_split_event.py +3 -3
  144. lusid/models/scrip_dividend_event.py +3 -3
  145. lusid/models/simple_cash_flow_loan.py +3 -3
  146. lusid/models/simple_instrument.py +3 -3
  147. lusid/models/spin_off_event.py +3 -3
  148. lusid/models/staging_rule_approval_criteria.py +10 -3
  149. lusid/models/stock_dividend_event.py +3 -3
  150. lusid/models/stock_split_event.py +3 -3
  151. lusid/models/string_compliance_parameter.py +3 -3
  152. lusid/models/string_list_compliance_parameter.py +3 -3
  153. lusid/models/term_deposit.py +3 -3
  154. lusid/models/total_return_swap.py +3 -3
  155. lusid/models/transaction_configuration_movement_data.py +1 -1
  156. lusid/models/transaction_configuration_movement_data_request.py +1 -1
  157. lusid/models/transaction_field_map.py +7 -2
  158. lusid/models/transaction_type_calculation.py +11 -14
  159. lusid/models/transaction_type_movement.py +20 -3
  160. lusid/models/transition_event.py +3 -3
  161. lusid/models/trigger_event.py +3 -3
  162. lusid/models/update_placements_response.py +153 -0
  163. lusid/models/upsert_instruments_response.py +20 -1
  164. lusid/models/upsert_persons_response.py +114 -0
  165. {lusid_sdk-2.1.198.dist-info → lusid_sdk-2.1.261.dist-info}/METADATA +32 -4
  166. {lusid_sdk-2.1.198.dist-info → lusid_sdk-2.1.261.dist-info}/RECORD +167 -149
  167. {lusid_sdk-2.1.198.dist-info → lusid_sdk-2.1.261.dist-info}/WHEEL +0 -0
lusid/api/funds_api.py CHANGED
@@ -239,30 +239,28 @@ class FundsApi:
239
239
  _request_auth=_params.get('_request_auth'))
240
240
 
241
241
  @overload
242
- async def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], **kwargs) -> Fee: # noqa: E501
242
+ async def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], **kwargs) -> Fee: # noqa: E501
243
243
  ...
244
244
 
245
245
  @overload
246
- def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], async_req: Optional[bool]=True, **kwargs) -> Fee: # noqa: E501
246
+ def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], async_req: Optional[bool]=True, **kwargs) -> Fee: # noqa: E501
247
247
  ...
248
248
 
249
249
  @validate_arguments
250
- def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fee, Awaitable[Fee]]: # noqa: E501
250
+ def create_fee(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fee, Awaitable[Fee]]: # noqa: E501
251
251
  """[EXPERIMENTAL] CreateFee: Create a Fee. # noqa: E501
252
252
 
253
253
  Create the given Fee. # noqa: E501
254
254
  This method makes a synchronous HTTP request by default. To make an
255
255
  asynchronous HTTP request, please pass async_req=True
256
256
 
257
- >>> thread = api.create_fee(scope, code, fee_code, fee_request, async_req=True)
257
+ >>> thread = api.create_fee(scope, code, fee_request, async_req=True)
258
258
  >>> result = thread.get()
259
259
 
260
260
  :param scope: The scope of the Fund. (required)
261
261
  :type scope: str
262
262
  :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
263
263
  :type code: str
264
- :param fee_code: The code of the Fee. (required)
265
- :type fee_code: str
266
264
  :param fee_request: The Fee to create. (required)
267
265
  :type fee_request: FeeRequest
268
266
  :param async_req: Whether to execute the request asynchronously.
@@ -282,25 +280,23 @@ class FundsApi:
282
280
  raise ValueError(message)
283
281
  if async_req is not None:
284
282
  kwargs['async_req'] = async_req
285
- return self.create_fee_with_http_info(scope, code, fee_code, fee_request, **kwargs) # noqa: E501
283
+ return self.create_fee_with_http_info(scope, code, fee_request, **kwargs) # noqa: E501
286
284
 
287
285
  @validate_arguments
288
- def create_fee_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], **kwargs) -> ApiResponse: # noqa: E501
286
+ def create_fee_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_request : Annotated[FeeRequest, Field(..., description="The Fee to create.")], **kwargs) -> ApiResponse: # noqa: E501
289
287
  """[EXPERIMENTAL] CreateFee: Create a Fee. # noqa: E501
290
288
 
291
289
  Create the given Fee. # noqa: E501
292
290
  This method makes a synchronous HTTP request by default. To make an
293
291
  asynchronous HTTP request, please pass async_req=True
294
292
 
295
- >>> thread = api.create_fee_with_http_info(scope, code, fee_code, fee_request, async_req=True)
293
+ >>> thread = api.create_fee_with_http_info(scope, code, fee_request, async_req=True)
296
294
  >>> result = thread.get()
297
295
 
298
296
  :param scope: The scope of the Fund. (required)
299
297
  :type scope: str
300
298
  :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
301
299
  :type code: str
302
- :param fee_code: The code of the Fee. (required)
303
- :type fee_code: str
304
300
  :param fee_request: The Fee to create. (required)
305
301
  :type fee_request: FeeRequest
306
302
  :param async_req: Whether to execute the request asynchronously.
@@ -333,7 +329,6 @@ class FundsApi:
333
329
  _all_params = [
334
330
  'scope',
335
331
  'code',
336
- 'fee_code',
337
332
  'fee_request'
338
333
  ]
339
334
  _all_params.extend(
@@ -368,9 +363,6 @@ class FundsApi:
368
363
  if _params['code']:
369
364
  _path_params['code'] = _params['code']
370
365
 
371
- if _params['fee_code']:
372
- _path_params['feeCode'] = _params['fee_code']
373
-
374
366
 
375
367
  # process the query parameters
376
368
  _query_params = []
@@ -404,7 +396,7 @@ class FundsApi:
404
396
  }
405
397
 
406
398
  return self.api_client.call_api(
407
- '/api/funds/{scope}/{code}/fees/{feeCode}', 'POST',
399
+ '/api/funds/{scope}/{code}/fees', 'POST',
408
400
  _path_params,
409
401
  _query_params,
410
402
  _header_params,
@@ -22,18 +22,21 @@ from typing import overload, Optional, Union, Awaitable
22
22
  from typing_extensions import Annotated
23
23
  from pydantic.v1 import Field, StrictBool, conlist, constr, validator
24
24
 
25
- from typing import Optional
25
+ from typing import Dict, Optional
26
26
 
27
27
  from lusid.models.allocation_service_run_response import AllocationServiceRunResponse
28
28
  from lusid.models.block_and_orders_create_request import BlockAndOrdersCreateRequest
29
29
  from lusid.models.book_transactions_request import BookTransactionsRequest
30
30
  from lusid.models.book_transactions_response import BookTransactionsResponse
31
+ from lusid.models.cancel_placements_response import CancelPlacementsResponse
31
32
  from lusid.models.move_orders_to_different_blocks_request import MoveOrdersToDifferentBlocksRequest
32
33
  from lusid.models.place_blocks_request import PlaceBlocksRequest
34
+ from lusid.models.placement_update_request import PlacementUpdateRequest
33
35
  from lusid.models.resource_id import ResourceId
34
36
  from lusid.models.resource_list_of_block_and_orders import ResourceListOfBlockAndOrders
35
37
  from lusid.models.resource_list_of_moved_order_to_different_block_response import ResourceListOfMovedOrderToDifferentBlockResponse
36
38
  from lusid.models.resource_list_of_placement import ResourceListOfPlacement
39
+ from lusid.models.update_placements_response import UpdatePlacementsResponse
37
40
 
38
41
  from lusid.api_client import ApiClient
39
42
  from lusid.api_response import ApiResponse
@@ -221,6 +224,164 @@ class OrderManagementApi:
221
224
  collection_formats=_collection_formats,
222
225
  _request_auth=_params.get('_request_auth'))
223
226
 
227
+ @overload
228
+ async def cancel_placements(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], **kwargs) -> CancelPlacementsResponse: # noqa: E501
229
+ ...
230
+
231
+ @overload
232
+ def cancel_placements(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], async_req: Optional[bool]=True, **kwargs) -> CancelPlacementsResponse: # noqa: E501
233
+ ...
234
+
235
+ @validate_arguments
236
+ def cancel_placements(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], async_req: Optional[bool]=None, **kwargs) -> Union[CancelPlacementsResponse, Awaitable[CancelPlacementsResponse]]: # noqa: E501
237
+ """[EARLY ACCESS] CancelPlacements: Cancel existing placements # noqa: E501
238
+
239
+ The response returns both the collection of successfully canceled placements, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
240
+ This method makes a synchronous HTTP request by default. To make an
241
+ asynchronous HTTP request, please pass async_req=True
242
+
243
+ >>> thread = api.cancel_placements(request_body, async_req=True)
244
+ >>> result = thread.get()
245
+
246
+ :param request_body: The request containing the ids of the placements to be cancelled. (required)
247
+ :type request_body: Dict[str, ResourceId]
248
+ :param async_req: Whether to execute the request asynchronously.
249
+ :type async_req: bool, optional
250
+ :param _request_timeout: timeout setting for this request.
251
+ If one number provided, it will be total request
252
+ timeout. It can also be a pair (tuple) of
253
+ (connection, read) timeouts.
254
+ :return: Returns the result object.
255
+ If the method is called asynchronously,
256
+ returns the request thread.
257
+ :rtype: CancelPlacementsResponse
258
+ """
259
+ kwargs['_return_http_data_only'] = True
260
+ if '_preload_content' in kwargs:
261
+ message = "Error! Please call the cancel_placements_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
262
+ raise ValueError(message)
263
+ if async_req is not None:
264
+ kwargs['async_req'] = async_req
265
+ return self.cancel_placements_with_http_info(request_body, **kwargs) # noqa: E501
266
+
267
+ @validate_arguments
268
+ def cancel_placements_with_http_info(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], **kwargs) -> ApiResponse: # noqa: E501
269
+ """[EARLY ACCESS] CancelPlacements: Cancel existing placements # noqa: E501
270
+
271
+ The response returns both the collection of successfully canceled placements, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
272
+ This method makes a synchronous HTTP request by default. To make an
273
+ asynchronous HTTP request, please pass async_req=True
274
+
275
+ >>> thread = api.cancel_placements_with_http_info(request_body, async_req=True)
276
+ >>> result = thread.get()
277
+
278
+ :param request_body: The request containing the ids of the placements to be cancelled. (required)
279
+ :type request_body: Dict[str, ResourceId]
280
+ :param async_req: Whether to execute the request asynchronously.
281
+ :type async_req: bool, optional
282
+ :param _preload_content: if False, the ApiResponse.data will
283
+ be set to none and raw_data will store the
284
+ HTTP response body without reading/decoding.
285
+ Default is True.
286
+ :type _preload_content: bool, optional
287
+ :param _return_http_data_only: response data instead of ApiResponse
288
+ object with status code, headers, etc
289
+ :type _return_http_data_only: bool, optional
290
+ :param _request_timeout: timeout setting for this request. If one
291
+ number provided, it will be total request
292
+ timeout. It can also be a pair (tuple) of
293
+ (connection, read) timeouts.
294
+ :param _request_auth: set to override the auth_settings for an a single
295
+ request; this effectively ignores the authentication
296
+ in the spec for a single request.
297
+ :type _request_auth: dict, optional
298
+ :type _content_type: string, optional: force content-type for the request
299
+ :return: Returns the result object.
300
+ If the method is called asynchronously,
301
+ returns the request thread.
302
+ :rtype: tuple(CancelPlacementsResponse, status_code(int), headers(HTTPHeaderDict))
303
+ """
304
+
305
+ _params = locals()
306
+
307
+ _all_params = [
308
+ 'request_body'
309
+ ]
310
+ _all_params.extend(
311
+ [
312
+ 'async_req',
313
+ '_return_http_data_only',
314
+ '_preload_content',
315
+ '_request_timeout',
316
+ '_request_auth',
317
+ '_content_type',
318
+ '_headers'
319
+ ]
320
+ )
321
+
322
+ # validate the arguments
323
+ for _key, _val in _params['kwargs'].items():
324
+ if _key not in _all_params:
325
+ raise ApiTypeError(
326
+ "Got an unexpected keyword argument '%s'"
327
+ " to method cancel_placements" % _key
328
+ )
329
+ _params[_key] = _val
330
+ del _params['kwargs']
331
+
332
+ _collection_formats = {}
333
+
334
+ # process the path parameters
335
+ _path_params = {}
336
+
337
+ # process the query parameters
338
+ _query_params = []
339
+ # process the header parameters
340
+ _header_params = dict(_params.get('_headers', {}))
341
+ # process the form parameters
342
+ _form_params = []
343
+ _files = {}
344
+ # process the body parameter
345
+ _body_params = None
346
+ if _params['request_body'] is not None:
347
+ _body_params = _params['request_body']
348
+
349
+ # set the HTTP header `Accept`
350
+ _header_params['Accept'] = self.api_client.select_header_accept(
351
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
352
+
353
+ # set the HTTP header `Content-Type`
354
+ _content_types_list = _params.get('_content_type',
355
+ self.api_client.select_header_content_type(
356
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
357
+ if _content_types_list:
358
+ _header_params['Content-Type'] = _content_types_list
359
+
360
+ # authentication setting
361
+ _auth_settings = ['oauth2'] # noqa: E501
362
+
363
+ _response_types_map = {
364
+ '200': "CancelPlacementsResponse",
365
+ '400': "LusidValidationProblemDetails",
366
+ }
367
+
368
+ return self.api_client.call_api(
369
+ '/api/ordermanagement/$cancelplacements', 'POST',
370
+ _path_params,
371
+ _query_params,
372
+ _header_params,
373
+ body=_body_params,
374
+ post_params=_form_params,
375
+ files=_files,
376
+ response_types_map=_response_types_map,
377
+ auth_settings=_auth_settings,
378
+ async_req=_params.get('async_req'),
379
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
380
+ _preload_content=_params.get('_preload_content', True),
381
+ _request_timeout=_params.get('_request_timeout'),
382
+ collection_formats=_collection_formats,
383
+ _request_auth=_params.get('_request_auth'))
384
+
224
385
  @overload
225
386
  async def create_orders(self, block_and_orders_create_request : Annotated[BlockAndOrdersCreateRequest, Field(..., description="The collection of block and orders requests.")], **kwargs) -> ResourceListOfBlockAndOrders: # noqa: E501
226
387
  ...
@@ -860,3 +1021,161 @@ class OrderManagementApi:
860
1021
  _request_timeout=_params.get('_request_timeout'),
861
1022
  collection_formats=_collection_formats,
862
1023
  _request_auth=_params.get('_request_auth'))
1024
+
1025
+ @overload
1026
+ async def update_placements(self, request_body : Annotated[Dict[str, PlacementUpdateRequest], Field(..., description="The request containing the placements to be updated.")], **kwargs) -> UpdatePlacementsResponse: # noqa: E501
1027
+ ...
1028
+
1029
+ @overload
1030
+ def update_placements(self, request_body : Annotated[Dict[str, PlacementUpdateRequest], Field(..., description="The request containing the placements to be updated.")], async_req: Optional[bool]=True, **kwargs) -> UpdatePlacementsResponse: # noqa: E501
1031
+ ...
1032
+
1033
+ @validate_arguments
1034
+ def update_placements(self, request_body : Annotated[Dict[str, PlacementUpdateRequest], Field(..., description="The request containing the placements to be updated.")], async_req: Optional[bool]=None, **kwargs) -> Union[UpdatePlacementsResponse, Awaitable[UpdatePlacementsResponse]]: # noqa: E501
1035
+ """[EARLY ACCESS] UpdatePlacements: Update existing placements # noqa: E501
1036
+
1037
+ The response returns both the collection of successfully updated placements, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
1038
+ This method makes a synchronous HTTP request by default. To make an
1039
+ asynchronous HTTP request, please pass async_req=True
1040
+
1041
+ >>> thread = api.update_placements(request_body, async_req=True)
1042
+ >>> result = thread.get()
1043
+
1044
+ :param request_body: The request containing the placements to be updated. (required)
1045
+ :type request_body: Dict[str, PlacementUpdateRequest]
1046
+ :param async_req: Whether to execute the request asynchronously.
1047
+ :type async_req: bool, optional
1048
+ :param _request_timeout: timeout setting for this request.
1049
+ If one number provided, it will be total request
1050
+ timeout. It can also be a pair (tuple) of
1051
+ (connection, read) timeouts.
1052
+ :return: Returns the result object.
1053
+ If the method is called asynchronously,
1054
+ returns the request thread.
1055
+ :rtype: UpdatePlacementsResponse
1056
+ """
1057
+ kwargs['_return_http_data_only'] = True
1058
+ if '_preload_content' in kwargs:
1059
+ message = "Error! Please call the update_placements_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1060
+ raise ValueError(message)
1061
+ if async_req is not None:
1062
+ kwargs['async_req'] = async_req
1063
+ return self.update_placements_with_http_info(request_body, **kwargs) # noqa: E501
1064
+
1065
+ @validate_arguments
1066
+ def update_placements_with_http_info(self, request_body : Annotated[Dict[str, PlacementUpdateRequest], Field(..., description="The request containing the placements to be updated.")], **kwargs) -> ApiResponse: # noqa: E501
1067
+ """[EARLY ACCESS] UpdatePlacements: Update existing placements # noqa: E501
1068
+
1069
+ The response returns both the collection of successfully updated placements, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
1070
+ This method makes a synchronous HTTP request by default. To make an
1071
+ asynchronous HTTP request, please pass async_req=True
1072
+
1073
+ >>> thread = api.update_placements_with_http_info(request_body, async_req=True)
1074
+ >>> result = thread.get()
1075
+
1076
+ :param request_body: The request containing the placements to be updated. (required)
1077
+ :type request_body: Dict[str, PlacementUpdateRequest]
1078
+ :param async_req: Whether to execute the request asynchronously.
1079
+ :type async_req: bool, optional
1080
+ :param _preload_content: if False, the ApiResponse.data will
1081
+ be set to none and raw_data will store the
1082
+ HTTP response body without reading/decoding.
1083
+ Default is True.
1084
+ :type _preload_content: bool, optional
1085
+ :param _return_http_data_only: response data instead of ApiResponse
1086
+ object with status code, headers, etc
1087
+ :type _return_http_data_only: bool, optional
1088
+ :param _request_timeout: timeout setting for this request. If one
1089
+ number provided, it will be total request
1090
+ timeout. It can also be a pair (tuple) of
1091
+ (connection, read) timeouts.
1092
+ :param _request_auth: set to override the auth_settings for an a single
1093
+ request; this effectively ignores the authentication
1094
+ in the spec for a single request.
1095
+ :type _request_auth: dict, optional
1096
+ :type _content_type: string, optional: force content-type for the request
1097
+ :return: Returns the result object.
1098
+ If the method is called asynchronously,
1099
+ returns the request thread.
1100
+ :rtype: tuple(UpdatePlacementsResponse, status_code(int), headers(HTTPHeaderDict))
1101
+ """
1102
+
1103
+ _params = locals()
1104
+
1105
+ _all_params = [
1106
+ 'request_body'
1107
+ ]
1108
+ _all_params.extend(
1109
+ [
1110
+ 'async_req',
1111
+ '_return_http_data_only',
1112
+ '_preload_content',
1113
+ '_request_timeout',
1114
+ '_request_auth',
1115
+ '_content_type',
1116
+ '_headers'
1117
+ ]
1118
+ )
1119
+
1120
+ # validate the arguments
1121
+ for _key, _val in _params['kwargs'].items():
1122
+ if _key not in _all_params:
1123
+ raise ApiTypeError(
1124
+ "Got an unexpected keyword argument '%s'"
1125
+ " to method update_placements" % _key
1126
+ )
1127
+ _params[_key] = _val
1128
+ del _params['kwargs']
1129
+
1130
+ _collection_formats = {}
1131
+
1132
+ # process the path parameters
1133
+ _path_params = {}
1134
+
1135
+ # process the query parameters
1136
+ _query_params = []
1137
+ # process the header parameters
1138
+ _header_params = dict(_params.get('_headers', {}))
1139
+ # process the form parameters
1140
+ _form_params = []
1141
+ _files = {}
1142
+ # process the body parameter
1143
+ _body_params = None
1144
+ if _params['request_body'] is not None:
1145
+ _body_params = _params['request_body']
1146
+
1147
+ # set the HTTP header `Accept`
1148
+ _header_params['Accept'] = self.api_client.select_header_accept(
1149
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1150
+
1151
+ # set the HTTP header `Content-Type`
1152
+ _content_types_list = _params.get('_content_type',
1153
+ self.api_client.select_header_content_type(
1154
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1155
+ if _content_types_list:
1156
+ _header_params['Content-Type'] = _content_types_list
1157
+
1158
+ # authentication setting
1159
+ _auth_settings = ['oauth2'] # noqa: E501
1160
+
1161
+ _response_types_map = {
1162
+ '200': "UpdatePlacementsResponse",
1163
+ '400': "LusidValidationProblemDetails",
1164
+ }
1165
+
1166
+ return self.api_client.call_api(
1167
+ '/api/ordermanagement/$updateplacements', 'POST',
1168
+ _path_params,
1169
+ _query_params,
1170
+ _header_params,
1171
+ body=_body_params,
1172
+ post_params=_form_params,
1173
+ files=_files,
1174
+ response_types_map=_response_types_map,
1175
+ auth_settings=_auth_settings,
1176
+ async_req=_params.get('async_req'),
1177
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1178
+ _preload_content=_params.get('_preload_content', True),
1179
+ _request_timeout=_params.get('_request_timeout'),
1180
+ collection_formats=_collection_formats,
1181
+ _request_auth=_params.get('_request_auth'))
lusid/api/persons_api.py CHANGED
@@ -40,6 +40,7 @@ from lusid.models.set_person_identifiers_request import SetPersonIdentifiersRequ
40
40
  from lusid.models.set_person_properties_request import SetPersonPropertiesRequest
41
41
  from lusid.models.upsert_person_access_metadata_request import UpsertPersonAccessMetadataRequest
42
42
  from lusid.models.upsert_person_request import UpsertPersonRequest
43
+ from lusid.models.upsert_persons_response import UpsertPersonsResponse
43
44
 
44
45
  from lusid.api_client import ApiClient
45
46
  from lusid.api_response import ApiResponse
@@ -3345,3 +3346,169 @@ class PersonsApi:
3345
3346
  _request_timeout=_params.get('_request_timeout'),
3346
3347
  collection_formats=_collection_formats,
3347
3348
  _request_auth=_params.get('_request_auth'))
3349
+
3350
+ @overload
3351
+ async def upsert_persons(self, 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")], request_body : Annotated[Dict[str, UpsertPersonRequest], Field(..., description="A collection of requests to create or update Person(s).")], **kwargs) -> UpsertPersonsResponse: # noqa: E501
3352
+ ...
3353
+
3354
+ @overload
3355
+ def upsert_persons(self, 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")], request_body : Annotated[Dict[str, UpsertPersonRequest], Field(..., description="A collection of requests to create or update Person(s).")], async_req: Optional[bool]=True, **kwargs) -> UpsertPersonsResponse: # noqa: E501
3356
+ ...
3357
+
3358
+ @validate_arguments
3359
+ def upsert_persons(self, 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")], request_body : Annotated[Dict[str, UpsertPersonRequest], Field(..., description="A collection of requests to create or update Person(s).")], async_req: Optional[bool]=None, **kwargs) -> Union[UpsertPersonsResponse, Awaitable[UpsertPersonsResponse]]: # noqa: E501
3360
+ """[EARLY ACCESS] UpsertPersons: Pluralised Upsert of Persons # noqa: E501
3361
+
3362
+ Create or updates a collection of person(s). # noqa: E501
3363
+ This method makes a synchronous HTTP request by default. To make an
3364
+ asynchronous HTTP request, please pass async_req=True
3365
+
3366
+ >>> thread = api.upsert_persons(success_mode, request_body, async_req=True)
3367
+ >>> result = thread.get()
3368
+
3369
+ :param success_mode: Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial (required)
3370
+ :type success_mode: str
3371
+ :param request_body: A collection of requests to create or update Person(s). (required)
3372
+ :type request_body: Dict[str, UpsertPersonRequest]
3373
+ :param async_req: Whether to execute the request asynchronously.
3374
+ :type async_req: bool, optional
3375
+ :param _request_timeout: timeout setting for this request.
3376
+ If one number provided, it will be total request
3377
+ timeout. It can also be a pair (tuple) of
3378
+ (connection, read) timeouts.
3379
+ :return: Returns the result object.
3380
+ If the method is called asynchronously,
3381
+ returns the request thread.
3382
+ :rtype: UpsertPersonsResponse
3383
+ """
3384
+ kwargs['_return_http_data_only'] = True
3385
+ if '_preload_content' in kwargs:
3386
+ message = "Error! Please call the upsert_persons_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
3387
+ raise ValueError(message)
3388
+ if async_req is not None:
3389
+ kwargs['async_req'] = async_req
3390
+ return self.upsert_persons_with_http_info(success_mode, request_body, **kwargs) # noqa: E501
3391
+
3392
+ @validate_arguments
3393
+ def upsert_persons_with_http_info(self, 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")], request_body : Annotated[Dict[str, UpsertPersonRequest], Field(..., description="A collection of requests to create or update Person(s).")], **kwargs) -> ApiResponse: # noqa: E501
3394
+ """[EARLY ACCESS] UpsertPersons: Pluralised Upsert of Persons # noqa: E501
3395
+
3396
+ Create or updates a collection of person(s). # noqa: E501
3397
+ This method makes a synchronous HTTP request by default. To make an
3398
+ asynchronous HTTP request, please pass async_req=True
3399
+
3400
+ >>> thread = api.upsert_persons_with_http_info(success_mode, request_body, async_req=True)
3401
+ >>> result = thread.get()
3402
+
3403
+ :param success_mode: Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial (required)
3404
+ :type success_mode: str
3405
+ :param request_body: A collection of requests to create or update Person(s). (required)
3406
+ :type request_body: Dict[str, UpsertPersonRequest]
3407
+ :param async_req: Whether to execute the request asynchronously.
3408
+ :type async_req: bool, optional
3409
+ :param _preload_content: if False, the ApiResponse.data will
3410
+ be set to none and raw_data will store the
3411
+ HTTP response body without reading/decoding.
3412
+ Default is True.
3413
+ :type _preload_content: bool, optional
3414
+ :param _return_http_data_only: response data instead of ApiResponse
3415
+ object with status code, headers, etc
3416
+ :type _return_http_data_only: bool, optional
3417
+ :param _request_timeout: timeout setting for this request. If one
3418
+ number provided, it will be total request
3419
+ timeout. It can also be a pair (tuple) of
3420
+ (connection, read) timeouts.
3421
+ :param _request_auth: set to override the auth_settings for an a single
3422
+ request; this effectively ignores the authentication
3423
+ in the spec for a single request.
3424
+ :type _request_auth: dict, optional
3425
+ :type _content_type: string, optional: force content-type for the request
3426
+ :return: Returns the result object.
3427
+ If the method is called asynchronously,
3428
+ returns the request thread.
3429
+ :rtype: tuple(UpsertPersonsResponse, status_code(int), headers(HTTPHeaderDict))
3430
+ """
3431
+
3432
+ _params = locals()
3433
+
3434
+ _all_params = [
3435
+ 'success_mode',
3436
+ 'request_body'
3437
+ ]
3438
+ _all_params.extend(
3439
+ [
3440
+ 'async_req',
3441
+ '_return_http_data_only',
3442
+ '_preload_content',
3443
+ '_request_timeout',
3444
+ '_request_auth',
3445
+ '_content_type',
3446
+ '_headers'
3447
+ ]
3448
+ )
3449
+
3450
+ # validate the arguments
3451
+ for _key, _val in _params['kwargs'].items():
3452
+ if _key not in _all_params:
3453
+ raise ApiTypeError(
3454
+ "Got an unexpected keyword argument '%s'"
3455
+ " to method upsert_persons" % _key
3456
+ )
3457
+ _params[_key] = _val
3458
+ del _params['kwargs']
3459
+
3460
+ _collection_formats = {}
3461
+
3462
+ # process the path parameters
3463
+ _path_params = {}
3464
+
3465
+ # process the query parameters
3466
+ _query_params = []
3467
+ if _params.get('success_mode') is not None: # noqa: E501
3468
+ _query_params.append(('successMode', _params['success_mode']))
3469
+
3470
+ # process the header parameters
3471
+ _header_params = dict(_params.get('_headers', {}))
3472
+ # process the form parameters
3473
+ _form_params = []
3474
+ _files = {}
3475
+ # process the body parameter
3476
+ _body_params = None
3477
+ if _params['request_body'] is not None:
3478
+ _body_params = _params['request_body']
3479
+
3480
+ # set the HTTP header `Accept`
3481
+ _header_params['Accept'] = self.api_client.select_header_accept(
3482
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
3483
+
3484
+ # set the HTTP header `Content-Type`
3485
+ _content_types_list = _params.get('_content_type',
3486
+ self.api_client.select_header_content_type(
3487
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
3488
+ if _content_types_list:
3489
+ _header_params['Content-Type'] = _content_types_list
3490
+
3491
+ # authentication setting
3492
+ _auth_settings = ['oauth2'] # noqa: E501
3493
+
3494
+ _response_types_map = {
3495
+ '201': "UpsertPersonsResponse",
3496
+ '400': "LusidValidationProblemDetails",
3497
+ }
3498
+
3499
+ return self.api_client.call_api(
3500
+ '/api/persons/$batchUpsert', 'POST',
3501
+ _path_params,
3502
+ _query_params,
3503
+ _header_params,
3504
+ body=_body_params,
3505
+ post_params=_form_params,
3506
+ files=_files,
3507
+ response_types_map=_response_types_map,
3508
+ auth_settings=_auth_settings,
3509
+ async_req=_params.get('async_req'),
3510
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
3511
+ _preload_content=_params.get('_preload_content', True),
3512
+ _request_timeout=_params.get('_request_timeout'),
3513
+ collection_formats=_collection_formats,
3514
+ _request_auth=_params.get('_request_auth'))
@@ -4616,7 +4616,7 @@ class PortfoliosApi:
4616
4616
  def patch_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.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more check: https://datatracker.ietf.org/doc/html/rfc6902.")], async_req: Optional[bool]=None, **kwargs) -> Union[Portfolio, Awaitable[Portfolio]]: # noqa: E501
4617
4617
  """PatchPortfolio: Patch portfolio. # noqa: E501
4618
4618
 
4619
- Create or update certain fields for a particular portfolio. The behaviour is defined by the JSON Patch specification. Currently supported are: CreationDate, InstrumentScopes. # noqa: E501
4619
+ Create or update certain fields for a particular portfolio. The behaviour is defined by the JSON Patch specification. Currently supported are: Created, InstrumentScopes. # noqa: E501
4620
4620
  This method makes a synchronous HTTP request by default. To make an
4621
4621
  asynchronous HTTP request, please pass async_req=True
4622
4622
 
@@ -4652,7 +4652,7 @@ class PortfoliosApi:
4652
4652
  def patch_portfolio_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.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more check: https://datatracker.ietf.org/doc/html/rfc6902.")], **kwargs) -> ApiResponse: # noqa: E501
4653
4653
  """PatchPortfolio: Patch portfolio. # noqa: E501
4654
4654
 
4655
- Create or update certain fields for a particular portfolio. The behaviour is defined by the JSON Patch specification. Currently supported are: CreationDate, InstrumentScopes. # noqa: E501
4655
+ Create or update certain fields for a particular portfolio. The behaviour is defined by the JSON Patch specification. Currently supported are: Created, InstrumentScopes. # noqa: E501
4656
4656
  This method makes a synchronous HTTP request by default. To make an
4657
4657
  asynchronous HTTP request, please pass async_req=True
4658
4658
 
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.6632\n"\
376
+ "Version of the API: 0.11.6694\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
@@ -14,7 +14,7 @@ __all__ = [
14
14
  "ConfigurationLoader",
15
15
  "SecretsFileConfigurationLoader",
16
16
  "EnvironmentVariablesConfigurationLoader",
17
- "FileTokenConfigurationLoader"
17
+ "FileTokenConfigurationLoader",
18
18
  "ArgsConfigurationLoader",
19
19
  "SyncApiClient"
20
20
  ]