lusid-sdk 2.1.450__py3-none-any.whl → 2.1.468__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.
Files changed (100) hide show
  1. lusid/__init__.py +14 -0
  2. lusid/api/funds_api.py +174 -0
  3. lusid/api/instruments_api.py +187 -0
  4. lusid/api/order_management_api.py +160 -0
  5. lusid/api/transaction_portfolios_api.py +242 -0
  6. lusid/configuration.py +1 -1
  7. lusid/models/__init__.py +14 -0
  8. lusid/models/accumulation_event.py +3 -3
  9. lusid/models/amortisation_event.py +3 -3
  10. lusid/models/basket.py +3 -3
  11. lusid/models/bond.py +3 -3
  12. lusid/models/bond_coupon_event.py +3 -3
  13. lusid/models/bond_default_event.py +3 -3
  14. lusid/models/bond_principal_event.py +3 -3
  15. lusid/models/bonus_issue_event.py +3 -3
  16. lusid/models/cancel_order_and_move_remaining_result.py +84 -0
  17. lusid/models/cancel_orders_and_move_remaining_request.py +83 -0
  18. lusid/models/cancel_orders_and_move_remaining_response.py +153 -0
  19. lusid/models/cap_floor.py +3 -3
  20. lusid/models/capital_distribution_event.py +3 -3
  21. lusid/models/cash.py +3 -3
  22. lusid/models/cash_dividend_event.py +3 -3
  23. lusid/models/cash_flow_event.py +3 -3
  24. lusid/models/cash_perpetual.py +3 -3
  25. lusid/models/cds_credit_event.py +3 -3
  26. lusid/models/cds_index.py +3 -3
  27. lusid/models/cdx_credit_event.py +3 -3
  28. lusid/models/close_event.py +3 -3
  29. lusid/models/complex_bond.py +3 -3
  30. lusid/models/contract_for_difference.py +3 -3
  31. lusid/models/credit_default_swap.py +3 -3
  32. lusid/models/credit_premium_cash_flow_event.py +3 -3
  33. lusid/models/dividend_option_event.py +3 -3
  34. lusid/models/dividend_reinvestment_event.py +3 -3
  35. lusid/models/equity.py +3 -3
  36. lusid/models/equity_option.py +3 -3
  37. lusid/models/equity_swap.py +3 -3
  38. lusid/models/exchange_traded_option.py +3 -3
  39. lusid/models/exercise_event.py +3 -3
  40. lusid/models/exotic_instrument.py +3 -3
  41. lusid/models/expiry_event.py +3 -3
  42. lusid/models/fixed_leg.py +3 -3
  43. lusid/models/flexible_loan.py +3 -3
  44. lusid/models/floating_leg.py +3 -3
  45. lusid/models/forward_rate_agreement.py +3 -3
  46. lusid/models/fund_share_class.py +3 -3
  47. lusid/models/funding_leg.py +3 -3
  48. lusid/models/future.py +3 -3
  49. lusid/models/future_expiry_event.py +3 -3
  50. lusid/models/fx_forward.py +3 -3
  51. lusid/models/fx_forward_settlement_event.py +3 -3
  52. lusid/models/fx_option.py +3 -3
  53. lusid/models/fx_swap.py +3 -3
  54. lusid/models/holding_contributor.py +11 -4
  55. lusid/models/holding_ids_request.py +69 -0
  56. lusid/models/inflation_leg.py +3 -3
  57. lusid/models/inflation_linked_bond.py +3 -3
  58. lusid/models/inflation_swap.py +3 -3
  59. lusid/models/informational_error_event.py +3 -3
  60. lusid/models/informational_event.py +3 -3
  61. lusid/models/instrument_event.py +7 -5
  62. lusid/models/instrument_event_type.py +2 -0
  63. lusid/models/instrument_leg.py +3 -3
  64. lusid/models/instrument_type.py +1 -0
  65. lusid/models/interest_rate_swap.py +3 -3
  66. lusid/models/interest_rate_swaption.py +3 -3
  67. lusid/models/loan_facility.py +97 -0
  68. lusid/models/lusid_instrument.py +6 -5
  69. lusid/models/mastered_instrument.py +3 -3
  70. lusid/models/maturity_event.py +3 -3
  71. lusid/models/mbs_coupon_event.py +3 -3
  72. lusid/models/mbs_interest_deferral_event.py +3 -3
  73. lusid/models/mbs_interest_shortfall_event.py +97 -0
  74. lusid/models/mbs_principal_event.py +3 -3
  75. lusid/models/mbs_principal_write_off_event.py +3 -3
  76. lusid/models/merger_event.py +3 -3
  77. lusid/models/open_event.py +3 -3
  78. lusid/models/raw_vendor_event.py +3 -3
  79. lusid/models/reference_instrument.py +3 -3
  80. lusid/models/repo.py +3 -3
  81. lusid/models/reset_event.py +3 -3
  82. lusid/models/reverse_stock_split_event.py +21 -7
  83. lusid/models/scrip_dividend_event.py +3 -3
  84. lusid/models/simple_cash_flow_loan.py +3 -3
  85. lusid/models/simple_instrument.py +3 -3
  86. lusid/models/spin_off_event.py +3 -3
  87. lusid/models/stock_dividend_event.py +3 -3
  88. lusid/models/stock_split_event.py +3 -3
  89. lusid/models/swap_cash_flow_event.py +3 -3
  90. lusid/models/swap_principal_event.py +3 -3
  91. lusid/models/tender_event.py +172 -0
  92. lusid/models/term_deposit.py +3 -3
  93. lusid/models/total_return_swap.py +3 -3
  94. lusid/models/transaction_price.py +3 -3
  95. lusid/models/transaction_price_type.py +2 -0
  96. lusid/models/transition_event.py +3 -3
  97. lusid/models/trigger_event.py +3 -3
  98. {lusid_sdk-2.1.450.dist-info → lusid_sdk-2.1.468.dist-info}/METADATA +12 -1
  99. {lusid_sdk-2.1.450.dist-info → lusid_sdk-2.1.468.dist-info}/RECORD +100 -93
  100. {lusid_sdk-2.1.450.dist-info → lusid_sdk-2.1.468.dist-info}/WHEEL +0 -0
lusid/__init__.py CHANGED
@@ -195,6 +195,9 @@ from lusid.models.calculation_info import CalculationInfo
195
195
  from lusid.models.calendar import Calendar
196
196
  from lusid.models.calendar_date import CalendarDate
197
197
  from lusid.models.calendar_dependency import CalendarDependency
198
+ from lusid.models.cancel_order_and_move_remaining_result import CancelOrderAndMoveRemainingResult
199
+ from lusid.models.cancel_orders_and_move_remaining_request import CancelOrdersAndMoveRemainingRequest
200
+ from lusid.models.cancel_orders_and_move_remaining_response import CancelOrdersAndMoveRemainingResponse
198
201
  from lusid.models.cancel_orders_response import CancelOrdersResponse
199
202
  from lusid.models.cancel_placements_response import CancelPlacementsResponse
200
203
  from lusid.models.cancelled_order_result import CancelledOrderResult
@@ -522,6 +525,7 @@ from lusid.models.holding_adjustment import HoldingAdjustment
522
525
  from lusid.models.holding_adjustment_with_date import HoldingAdjustmentWithDate
523
526
  from lusid.models.holding_context import HoldingContext
524
527
  from lusid.models.holding_contributor import HoldingContributor
528
+ from lusid.models.holding_ids_request import HoldingIdsRequest
525
529
  from lusid.models.holding_pricing_info import HoldingPricingInfo
526
530
  from lusid.models.holdings_adjustment import HoldingsAdjustment
527
531
  from lusid.models.holdings_adjustment_header import HoldingsAdjustmentHeader
@@ -591,6 +595,7 @@ from lusid.models.link import Link
591
595
  from lusid.models.list_aggregation_reconciliation import ListAggregationReconciliation
592
596
  from lusid.models.list_aggregation_response import ListAggregationResponse
593
597
  from lusid.models.list_complex_market_data_with_meta_data_response import ListComplexMarketDataWithMetaDataResponse
598
+ from lusid.models.loan_facility import LoanFacility
594
599
  from lusid.models.loan_period import LoanPeriod
595
600
  from lusid.models.lock_period_diary_entry_request import LockPeriodDiaryEntryRequest
596
601
  from lusid.models.lusid_instrument import LusidInstrument
@@ -617,6 +622,7 @@ from lusid.models.match_criterion import MatchCriterion
617
622
  from lusid.models.maturity_event import MaturityEvent
618
623
  from lusid.models.mbs_coupon_event import MbsCouponEvent
619
624
  from lusid.models.mbs_interest_deferral_event import MbsInterestDeferralEvent
625
+ from lusid.models.mbs_interest_shortfall_event import MbsInterestShortfallEvent
620
626
  from lusid.models.mbs_principal_event import MbsPrincipalEvent
621
627
  from lusid.models.mbs_principal_write_off_event import MbsPrincipalWriteOffEvent
622
628
  from lusid.models.merger_event import MergerEvent
@@ -1024,6 +1030,7 @@ from lusid.models.target_tax_lot_request import TargetTaxLotRequest
1024
1030
  from lusid.models.tax_rule import TaxRule
1025
1031
  from lusid.models.tax_rule_set import TaxRuleSet
1026
1032
  from lusid.models.template_field import TemplateField
1033
+ from lusid.models.tender_event import TenderEvent
1027
1034
  from lusid.models.term_deposit import TermDeposit
1028
1035
  from lusid.models.total_return_swap import TotalReturnSwap
1029
1036
  from lusid.models.touch import Touch
@@ -1374,6 +1381,9 @@ __all__ = [
1374
1381
  "Calendar",
1375
1382
  "CalendarDate",
1376
1383
  "CalendarDependency",
1384
+ "CancelOrderAndMoveRemainingResult",
1385
+ "CancelOrdersAndMoveRemainingRequest",
1386
+ "CancelOrdersAndMoveRemainingResponse",
1377
1387
  "CancelOrdersResponse",
1378
1388
  "CancelPlacementsResponse",
1379
1389
  "CancelledOrderResult",
@@ -1701,6 +1711,7 @@ __all__ = [
1701
1711
  "HoldingAdjustmentWithDate",
1702
1712
  "HoldingContext",
1703
1713
  "HoldingContributor",
1714
+ "HoldingIdsRequest",
1704
1715
  "HoldingPricingInfo",
1705
1716
  "HoldingsAdjustment",
1706
1717
  "HoldingsAdjustmentHeader",
@@ -1770,6 +1781,7 @@ __all__ = [
1770
1781
  "ListAggregationReconciliation",
1771
1782
  "ListAggregationResponse",
1772
1783
  "ListComplexMarketDataWithMetaDataResponse",
1784
+ "LoanFacility",
1773
1785
  "LoanPeriod",
1774
1786
  "LockPeriodDiaryEntryRequest",
1775
1787
  "LusidInstrument",
@@ -1796,6 +1808,7 @@ __all__ = [
1796
1808
  "MaturityEvent",
1797
1809
  "MbsCouponEvent",
1798
1810
  "MbsInterestDeferralEvent",
1811
+ "MbsInterestShortfallEvent",
1799
1812
  "MbsPrincipalEvent",
1800
1813
  "MbsPrincipalWriteOffEvent",
1801
1814
  "MergerEvent",
@@ -2203,6 +2216,7 @@ __all__ = [
2203
2216
  "TaxRule",
2204
2217
  "TaxRuleSet",
2205
2218
  "TemplateField",
2219
+ "TenderEvent",
2206
2220
  "TermDeposit",
2207
2221
  "TotalReturnSwap",
2208
2222
  "Touch",
lusid/api/funds_api.py CHANGED
@@ -2632,6 +2632,180 @@ class FundsApi:
2632
2632
  collection_formats=_collection_formats,
2633
2633
  _request_auth=_params.get('_request_auth'))
2634
2634
 
2635
+ @overload
2636
+ async def patch_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902.")], **kwargs) -> Fund: # noqa: E501
2637
+ ...
2638
+
2639
+ @overload
2640
+ def patch_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902.")], async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
2641
+ ...
2642
+
2643
+ @validate_arguments
2644
+ def patch_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
2645
+ """[EXPERIMENTAL] PatchFund: Patch a Fund. # noqa: E501
2646
+
2647
+ Update fields on a Fund. The behaviour is defined by the JSON Patch specification. Currently supported fields are: DisplayName, Description, FundConfigurationId, AborId, ShareClassInstrumentScopes, ShareClassInstruments, InceptionDate, DecimalPlaces, YearEndDate. # noqa: E501
2648
+ This method makes a synchronous HTTP request by default. To make an
2649
+ asynchronous HTTP request, please pass async_req=True
2650
+
2651
+ >>> thread = api.patch_fund(scope, code, operation, async_req=True)
2652
+ >>> result = thread.get()
2653
+
2654
+ :param scope: The scope of the Fund. (required)
2655
+ :type scope: str
2656
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2657
+ :type code: str
2658
+ :param operation: The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902. (required)
2659
+ :type operation: List[Operation]
2660
+ :param async_req: Whether to execute the request asynchronously.
2661
+ :type async_req: bool, optional
2662
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
2663
+ :param opts: Configuration options for this request
2664
+ :type opts: ConfigurationOptions, optional
2665
+ :return: Returns the result object.
2666
+ If the method is called asynchronously,
2667
+ returns the request thread.
2668
+ :rtype: Fund
2669
+ """
2670
+ kwargs['_return_http_data_only'] = True
2671
+ if '_preload_content' in kwargs:
2672
+ message = "Error! Please call the patch_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2673
+ raise ValueError(message)
2674
+ if async_req is not None:
2675
+ kwargs['async_req'] = async_req
2676
+ return self.patch_fund_with_http_info(scope, code, operation, **kwargs) # noqa: E501
2677
+
2678
+ @validate_arguments
2679
+ def patch_fund_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], operation : Annotated[conlist(Operation), Field(..., description="The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902.")], **kwargs) -> ApiResponse: # noqa: E501
2680
+ """[EXPERIMENTAL] PatchFund: Patch a Fund. # noqa: E501
2681
+
2682
+ Update fields on a Fund. The behaviour is defined by the JSON Patch specification. Currently supported fields are: DisplayName, Description, FundConfigurationId, AborId, ShareClassInstrumentScopes, ShareClassInstruments, InceptionDate, DecimalPlaces, YearEndDate. # noqa: E501
2683
+ This method makes a synchronous HTTP request by default. To make an
2684
+ asynchronous HTTP request, please pass async_req=True
2685
+
2686
+ >>> thread = api.patch_fund_with_http_info(scope, code, operation, async_req=True)
2687
+ >>> result = thread.get()
2688
+
2689
+ :param scope: The scope of the Fund. (required)
2690
+ :type scope: str
2691
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2692
+ :type code: str
2693
+ :param operation: The json patch document. For more information see: https://datatracker.ietf.org/doc/html/rfc6902. (required)
2694
+ :type operation: List[Operation]
2695
+ :param async_req: Whether to execute the request asynchronously.
2696
+ :type async_req: bool, optional
2697
+ :param _preload_content: if False, the ApiResponse.data will
2698
+ be set to none and raw_data will store the
2699
+ HTTP response body without reading/decoding.
2700
+ Default is True.
2701
+ :type _preload_content: bool, optional
2702
+ :param _return_http_data_only: response data instead of ApiResponse
2703
+ object with status code, headers, etc
2704
+ :type _return_http_data_only: bool, optional
2705
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
2706
+ :param opts: Configuration options for this request
2707
+ :type opts: ConfigurationOptions, optional
2708
+ :param _request_auth: set to override the auth_settings for an a single
2709
+ request; this effectively ignores the authentication
2710
+ in the spec for a single request.
2711
+ :type _request_auth: dict, optional
2712
+ :type _content_type: string, optional: force content-type for the request
2713
+ :return: Returns the result object.
2714
+ If the method is called asynchronously,
2715
+ returns the request thread.
2716
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
2717
+ """
2718
+
2719
+ _params = locals()
2720
+
2721
+ _all_params = [
2722
+ 'scope',
2723
+ 'code',
2724
+ 'operation'
2725
+ ]
2726
+ _all_params.extend(
2727
+ [
2728
+ 'async_req',
2729
+ '_return_http_data_only',
2730
+ '_preload_content',
2731
+ '_request_timeout',
2732
+ '_request_auth',
2733
+ '_content_type',
2734
+ '_headers',
2735
+ 'opts'
2736
+ ]
2737
+ )
2738
+
2739
+ # validate the arguments
2740
+ for _key, _val in _params['kwargs'].items():
2741
+ if _key not in _all_params:
2742
+ raise ApiTypeError(
2743
+ "Got an unexpected keyword argument '%s'"
2744
+ " to method patch_fund" % _key
2745
+ )
2746
+ _params[_key] = _val
2747
+ del _params['kwargs']
2748
+
2749
+ _collection_formats = {}
2750
+
2751
+ # process the path parameters
2752
+ _path_params = {}
2753
+ if _params['scope']:
2754
+ _path_params['scope'] = _params['scope']
2755
+
2756
+ if _params['code']:
2757
+ _path_params['code'] = _params['code']
2758
+
2759
+
2760
+ # process the query parameters
2761
+ _query_params = []
2762
+ # process the header parameters
2763
+ _header_params = dict(_params.get('_headers', {}))
2764
+ # process the form parameters
2765
+ _form_params = []
2766
+ _files = {}
2767
+ # process the body parameter
2768
+ _body_params = None
2769
+ if _params['operation'] is not None:
2770
+ _body_params = _params['operation']
2771
+
2772
+ # set the HTTP header `Accept`
2773
+ _header_params['Accept'] = self.api_client.select_header_accept(
2774
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
2775
+
2776
+ # set the HTTP header `Content-Type`
2777
+ _content_types_list = _params.get('_content_type',
2778
+ self.api_client.select_header_content_type(
2779
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
2780
+ if _content_types_list:
2781
+ _header_params['Content-Type'] = _content_types_list
2782
+
2783
+ # authentication setting
2784
+ _auth_settings = ['oauth2'] # noqa: E501
2785
+
2786
+ _response_types_map = {
2787
+ '200': "Fund",
2788
+ '400': "LusidValidationProblemDetails",
2789
+ }
2790
+
2791
+ return self.api_client.call_api(
2792
+ '/api/funds/{scope}/{code}', 'PATCH',
2793
+ _path_params,
2794
+ _query_params,
2795
+ _header_params,
2796
+ body=_body_params,
2797
+ post_params=_form_params,
2798
+ files=_files,
2799
+ response_types_map=_response_types_map,
2800
+ auth_settings=_auth_settings,
2801
+ async_req=_params.get('async_req'),
2802
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
2803
+ _preload_content=_params.get('_preload_content', True),
2804
+ _request_timeout=_params.get('_request_timeout'),
2805
+ opts=_params.get('opts'),
2806
+ collection_formats=_collection_formats,
2807
+ _request_auth=_params.get('_request_auth'))
2808
+
2635
2809
  @overload
2636
2810
  async def set_share_class_instruments(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], **kwargs) -> Fund: # noqa: E501
2637
2811
  ...
@@ -26,6 +26,7 @@ from pydantic.v1 import Field, StrictStr, conint, conlist, constr, validator
26
26
 
27
27
  from typing import Dict, List, Optional
28
28
 
29
+ from lusid.models.add_business_days_to_date_response import AddBusinessDaysToDateResponse
29
30
  from lusid.models.batch_upsert_instrument_properties_response import BatchUpsertInstrumentPropertiesResponse
30
31
  from lusid.models.delete_instrument_properties_response import DeleteInstrumentPropertiesResponse
31
32
  from lusid.models.delete_instrument_response import DeleteInstrumentResponse
@@ -251,6 +252,192 @@ class InstrumentsApi:
251
252
  collection_formats=_collection_formats,
252
253
  _request_auth=_params.get('_request_auth'))
253
254
 
255
+ @overload
256
+ async def calculate_settlement_date(self, identifier_type : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="An identifier type attached to the Instrument.")], identifier : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The identifier value.")], transaction_date : Annotated[Optional[StrictStr], Field(description="The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.")] = None, scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope in which the instrument lies. When not supplied the scope is 'default'.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.")] = None, **kwargs) -> AddBusinessDaysToDateResponse: # noqa: E501
257
+ ...
258
+
259
+ @overload
260
+ def calculate_settlement_date(self, identifier_type : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="An identifier type attached to the Instrument.")], identifier : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The identifier value.")], transaction_date : Annotated[Optional[StrictStr], Field(description="The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.")] = None, scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope in which the instrument lies. When not supplied the scope is 'default'.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> AddBusinessDaysToDateResponse: # noqa: E501
261
+ ...
262
+
263
+ @validate_arguments
264
+ def calculate_settlement_date(self, identifier_type : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="An identifier type attached to the Instrument.")], identifier : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The identifier value.")], transaction_date : Annotated[Optional[StrictStr], Field(description="The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.")] = None, scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope in which the instrument lies. When not supplied the scope is 'default'.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[AddBusinessDaysToDateResponse, Awaitable[AddBusinessDaysToDateResponse]]: # noqa: E501
265
+ """[EARLY ACCESS] CalculateSettlementDate: Get the settlement date for an instrument. # noqa: E501
266
+
267
+ Get the settlement date for a given trade date and instrument. The calculated settlement date will be in UTC. If a cut label transaction date is provided, the settlement date will be calculated relative to the absolute UTC datetime. # noqa: E501
268
+ This method makes a synchronous HTTP request by default. To make an
269
+ asynchronous HTTP request, please pass async_req=True
270
+
271
+ >>> thread = api.calculate_settlement_date(identifier_type, identifier, transaction_date, scope, as_at, async_req=True)
272
+ >>> result = thread.get()
273
+
274
+ :param identifier_type: An identifier type attached to the Instrument. (required)
275
+ :type identifier_type: str
276
+ :param identifier: The identifier value. (required)
277
+ :type identifier: str
278
+ :param transaction_date: The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.
279
+ :type transaction_date: str
280
+ :param scope: The scope in which the instrument lies. When not supplied the scope is 'default'.
281
+ :type scope: str
282
+ :param as_at: The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.
283
+ :type as_at: datetime
284
+ :param async_req: Whether to execute the request asynchronously.
285
+ :type async_req: bool, optional
286
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
287
+ :param opts: Configuration options for this request
288
+ :type opts: ConfigurationOptions, optional
289
+ :return: Returns the result object.
290
+ If the method is called asynchronously,
291
+ returns the request thread.
292
+ :rtype: AddBusinessDaysToDateResponse
293
+ """
294
+ kwargs['_return_http_data_only'] = True
295
+ if '_preload_content' in kwargs:
296
+ message = "Error! Please call the calculate_settlement_date_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
297
+ raise ValueError(message)
298
+ if async_req is not None:
299
+ kwargs['async_req'] = async_req
300
+ return self.calculate_settlement_date_with_http_info(identifier_type, identifier, transaction_date, scope, as_at, **kwargs) # noqa: E501
301
+
302
+ @validate_arguments
303
+ def calculate_settlement_date_with_http_info(self, identifier_type : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="An identifier type attached to the Instrument.")], identifier : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The identifier value.")], transaction_date : Annotated[Optional[StrictStr], Field(description="The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.")] = None, scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope in which the instrument lies. When not supplied the scope is 'default'.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
304
+ """[EARLY ACCESS] CalculateSettlementDate: Get the settlement date for an instrument. # noqa: E501
305
+
306
+ Get the settlement date for a given trade date and instrument. The calculated settlement date will be in UTC. If a cut label transaction date is provided, the settlement date will be calculated relative to the absolute UTC datetime. # noqa: E501
307
+ This method makes a synchronous HTTP request by default. To make an
308
+ asynchronous HTTP request, please pass async_req=True
309
+
310
+ >>> thread = api.calculate_settlement_date_with_http_info(identifier_type, identifier, transaction_date, scope, as_at, async_req=True)
311
+ >>> result = thread.get()
312
+
313
+ :param identifier_type: An identifier type attached to the Instrument. (required)
314
+ :type identifier_type: str
315
+ :param identifier: The identifier value. (required)
316
+ :type identifier: str
317
+ :param transaction_date: The transaction date to calculate the settlement date from. This can be a UTC datetime offset or a cut label.
318
+ :type transaction_date: str
319
+ :param scope: The scope in which the instrument lies. When not supplied the scope is 'default'.
320
+ :type scope: str
321
+ :param as_at: The asAt datetime at which to retrieve the related instrument and calendars for calculation. Defaults to returning the latest version if not specified.
322
+ :type as_at: datetime
323
+ :param async_req: Whether to execute the request asynchronously.
324
+ :type async_req: bool, optional
325
+ :param _preload_content: if False, the ApiResponse.data will
326
+ be set to none and raw_data will store the
327
+ HTTP response body without reading/decoding.
328
+ Default is True.
329
+ :type _preload_content: bool, optional
330
+ :param _return_http_data_only: response data instead of ApiResponse
331
+ object with status code, headers, etc
332
+ :type _return_http_data_only: bool, optional
333
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
334
+ :param opts: Configuration options for this request
335
+ :type opts: ConfigurationOptions, optional
336
+ :param _request_auth: set to override the auth_settings for an a single
337
+ request; this effectively ignores the authentication
338
+ in the spec for a single request.
339
+ :type _request_auth: dict, optional
340
+ :type _content_type: string, optional: force content-type for the request
341
+ :return: Returns the result object.
342
+ If the method is called asynchronously,
343
+ returns the request thread.
344
+ :rtype: tuple(AddBusinessDaysToDateResponse, status_code(int), headers(HTTPHeaderDict))
345
+ """
346
+
347
+ _params = locals()
348
+
349
+ _all_params = [
350
+ 'identifier_type',
351
+ 'identifier',
352
+ 'transaction_date',
353
+ 'scope',
354
+ 'as_at'
355
+ ]
356
+ _all_params.extend(
357
+ [
358
+ 'async_req',
359
+ '_return_http_data_only',
360
+ '_preload_content',
361
+ '_request_timeout',
362
+ '_request_auth',
363
+ '_content_type',
364
+ '_headers',
365
+ 'opts'
366
+ ]
367
+ )
368
+
369
+ # validate the arguments
370
+ for _key, _val in _params['kwargs'].items():
371
+ if _key not in _all_params:
372
+ raise ApiTypeError(
373
+ "Got an unexpected keyword argument '%s'"
374
+ " to method calculate_settlement_date" % _key
375
+ )
376
+ _params[_key] = _val
377
+ del _params['kwargs']
378
+
379
+ _collection_formats = {}
380
+
381
+ # process the path parameters
382
+ _path_params = {}
383
+ if _params['identifier_type']:
384
+ _path_params['identifierType'] = _params['identifier_type']
385
+
386
+ if _params['identifier']:
387
+ _path_params['identifier'] = _params['identifier']
388
+
389
+
390
+ # process the query parameters
391
+ _query_params = []
392
+ if _params.get('transaction_date') is not None: # noqa: E501
393
+ _query_params.append(('transactionDate', _params['transaction_date']))
394
+
395
+ if _params.get('scope') is not None: # noqa: E501
396
+ _query_params.append(('scope', _params['scope']))
397
+
398
+ if _params.get('as_at') is not None: # noqa: E501
399
+ if isinstance(_params['as_at'], datetime):
400
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
401
+ else:
402
+ _query_params.append(('asAt', _params['as_at']))
403
+
404
+ # process the header parameters
405
+ _header_params = dict(_params.get('_headers', {}))
406
+ # process the form parameters
407
+ _form_params = []
408
+ _files = {}
409
+ # process the body parameter
410
+ _body_params = None
411
+ # set the HTTP header `Accept`
412
+ _header_params['Accept'] = self.api_client.select_header_accept(
413
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
414
+
415
+ # authentication setting
416
+ _auth_settings = ['oauth2'] # noqa: E501
417
+
418
+ _response_types_map = {
419
+ '200': "AddBusinessDaysToDateResponse",
420
+ '400': "LusidValidationProblemDetails",
421
+ }
422
+
423
+ return self.api_client.call_api(
424
+ '/api/instruments/{identifierType}/{identifier}/settlementdate', 'GET',
425
+ _path_params,
426
+ _query_params,
427
+ _header_params,
428
+ body=_body_params,
429
+ post_params=_form_params,
430
+ files=_files,
431
+ response_types_map=_response_types_map,
432
+ auth_settings=_auth_settings,
433
+ async_req=_params.get('async_req'),
434
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
435
+ _preload_content=_params.get('_preload_content', True),
436
+ _request_timeout=_params.get('_request_timeout'),
437
+ opts=_params.get('opts'),
438
+ collection_formats=_collection_formats,
439
+ _request_auth=_params.get('_request_auth'))
440
+
254
441
  @overload
255
442
  async def delete_instrument(self, identifier_type : Annotated[StrictStr, Field(..., description="The unique identifier type to search, for example 'Figi'.")], identifier : Annotated[StrictStr, Field(..., description="An <i>identifierType</i> value to use to identify the instrument, for example 'BBG000BLNNV0'.")], scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope in which the instrument lies. When not supplied the scope is 'default'.")] = None, **kwargs) -> DeleteInstrumentResponse: # noqa: E501
256
443
  ...
@@ -30,6 +30,8 @@ from lusid.models.allocation_service_run_response import AllocationServiceRunRes
30
30
  from lusid.models.block_and_orders_create_request import BlockAndOrdersCreateRequest
31
31
  from lusid.models.book_transactions_request import BookTransactionsRequest
32
32
  from lusid.models.book_transactions_response import BookTransactionsResponse
33
+ from lusid.models.cancel_orders_and_move_remaining_request import CancelOrdersAndMoveRemainingRequest
34
+ from lusid.models.cancel_orders_and_move_remaining_response import CancelOrdersAndMoveRemainingResponse
33
35
  from lusid.models.cancel_orders_response import CancelOrdersResponse
34
36
  from lusid.models.cancel_placements_response import CancelPlacementsResponse
35
37
  from lusid.models.move_orders_to_different_blocks_request import MoveOrdersToDifferentBlocksRequest
@@ -389,6 +391,164 @@ class OrderManagementApi:
389
391
  collection_formats=_collection_formats,
390
392
  _request_auth=_params.get('_request_auth'))
391
393
 
394
+ @overload
395
+ async def cancel_orders_and_move_remaining(self, request_body : Annotated[Dict[str, CancelOrdersAndMoveRemainingRequest], Field(..., description="The request containing the orders to be cancelled, and the destinations of remaining quantities.")], **kwargs) -> CancelOrdersAndMoveRemainingResponse: # noqa: E501
396
+ ...
397
+
398
+ @overload
399
+ def cancel_orders_and_move_remaining(self, request_body : Annotated[Dict[str, CancelOrdersAndMoveRemainingRequest], Field(..., description="The request containing the orders to be cancelled, and the destinations of remaining quantities.")], async_req: Optional[bool]=True, **kwargs) -> CancelOrdersAndMoveRemainingResponse: # noqa: E501
400
+ ...
401
+
402
+ @validate_arguments
403
+ def cancel_orders_and_move_remaining(self, request_body : Annotated[Dict[str, CancelOrdersAndMoveRemainingRequest], Field(..., description="The request containing the orders to be cancelled, and the destinations of remaining quantities.")], async_req: Optional[bool]=None, **kwargs) -> Union[CancelOrdersAndMoveRemainingResponse, Awaitable[CancelOrdersAndMoveRemainingResponse]]: # noqa: E501
404
+ """[EARLY ACCESS] CancelOrdersAndMoveRemaining: Cancel existing orders and move any unplaced quantities to new orders in new blocks # noqa: E501
405
+
406
+ Cancels existing orders, reducing their quantities to those aleady placed. Any remaining quantities are moved to new orders in new blocks. The placed quantities are distributed to the cancelled orders on a pro-rata basis. # noqa: E501
407
+ This method makes a synchronous HTTP request by default. To make an
408
+ asynchronous HTTP request, please pass async_req=True
409
+
410
+ >>> thread = api.cancel_orders_and_move_remaining(request_body, async_req=True)
411
+ >>> result = thread.get()
412
+
413
+ :param request_body: The request containing the orders to be cancelled, and the destinations of remaining quantities. (required)
414
+ :type request_body: Dict[str, CancelOrdersAndMoveRemainingRequest]
415
+ :param async_req: Whether to execute the request asynchronously.
416
+ :type async_req: bool, optional
417
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
418
+ :param opts: Configuration options for this request
419
+ :type opts: ConfigurationOptions, optional
420
+ :return: Returns the result object.
421
+ If the method is called asynchronously,
422
+ returns the request thread.
423
+ :rtype: CancelOrdersAndMoveRemainingResponse
424
+ """
425
+ kwargs['_return_http_data_only'] = True
426
+ if '_preload_content' in kwargs:
427
+ message = "Error! Please call the cancel_orders_and_move_remaining_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
428
+ raise ValueError(message)
429
+ if async_req is not None:
430
+ kwargs['async_req'] = async_req
431
+ return self.cancel_orders_and_move_remaining_with_http_info(request_body, **kwargs) # noqa: E501
432
+
433
+ @validate_arguments
434
+ def cancel_orders_and_move_remaining_with_http_info(self, request_body : Annotated[Dict[str, CancelOrdersAndMoveRemainingRequest], Field(..., description="The request containing the orders to be cancelled, and the destinations of remaining quantities.")], **kwargs) -> ApiResponse: # noqa: E501
435
+ """[EARLY ACCESS] CancelOrdersAndMoveRemaining: Cancel existing orders and move any unplaced quantities to new orders in new blocks # noqa: E501
436
+
437
+ Cancels existing orders, reducing their quantities to those aleady placed. Any remaining quantities are moved to new orders in new blocks. The placed quantities are distributed to the cancelled orders on a pro-rata basis. # noqa: E501
438
+ This method makes a synchronous HTTP request by default. To make an
439
+ asynchronous HTTP request, please pass async_req=True
440
+
441
+ >>> thread = api.cancel_orders_and_move_remaining_with_http_info(request_body, async_req=True)
442
+ >>> result = thread.get()
443
+
444
+ :param request_body: The request containing the orders to be cancelled, and the destinations of remaining quantities. (required)
445
+ :type request_body: Dict[str, CancelOrdersAndMoveRemainingRequest]
446
+ :param async_req: Whether to execute the request asynchronously.
447
+ :type async_req: bool, optional
448
+ :param _preload_content: if False, the ApiResponse.data will
449
+ be set to none and raw_data will store the
450
+ HTTP response body without reading/decoding.
451
+ Default is True.
452
+ :type _preload_content: bool, optional
453
+ :param _return_http_data_only: response data instead of ApiResponse
454
+ object with status code, headers, etc
455
+ :type _return_http_data_only: bool, optional
456
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
457
+ :param opts: Configuration options for this request
458
+ :type opts: ConfigurationOptions, optional
459
+ :param _request_auth: set to override the auth_settings for an a single
460
+ request; this effectively ignores the authentication
461
+ in the spec for a single request.
462
+ :type _request_auth: dict, optional
463
+ :type _content_type: string, optional: force content-type for the request
464
+ :return: Returns the result object.
465
+ If the method is called asynchronously,
466
+ returns the request thread.
467
+ :rtype: tuple(CancelOrdersAndMoveRemainingResponse, status_code(int), headers(HTTPHeaderDict))
468
+ """
469
+
470
+ _params = locals()
471
+
472
+ _all_params = [
473
+ 'request_body'
474
+ ]
475
+ _all_params.extend(
476
+ [
477
+ 'async_req',
478
+ '_return_http_data_only',
479
+ '_preload_content',
480
+ '_request_timeout',
481
+ '_request_auth',
482
+ '_content_type',
483
+ '_headers',
484
+ 'opts'
485
+ ]
486
+ )
487
+
488
+ # validate the arguments
489
+ for _key, _val in _params['kwargs'].items():
490
+ if _key not in _all_params:
491
+ raise ApiTypeError(
492
+ "Got an unexpected keyword argument '%s'"
493
+ " to method cancel_orders_and_move_remaining" % _key
494
+ )
495
+ _params[_key] = _val
496
+ del _params['kwargs']
497
+
498
+ _collection_formats = {}
499
+
500
+ # process the path parameters
501
+ _path_params = {}
502
+
503
+ # process the query parameters
504
+ _query_params = []
505
+ # process the header parameters
506
+ _header_params = dict(_params.get('_headers', {}))
507
+ # process the form parameters
508
+ _form_params = []
509
+ _files = {}
510
+ # process the body parameter
511
+ _body_params = None
512
+ if _params['request_body'] is not None:
513
+ _body_params = _params['request_body']
514
+
515
+ # set the HTTP header `Accept`
516
+ _header_params['Accept'] = self.api_client.select_header_accept(
517
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
518
+
519
+ # set the HTTP header `Content-Type`
520
+ _content_types_list = _params.get('_content_type',
521
+ self.api_client.select_header_content_type(
522
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
523
+ if _content_types_list:
524
+ _header_params['Content-Type'] = _content_types_list
525
+
526
+ # authentication setting
527
+ _auth_settings = ['oauth2'] # noqa: E501
528
+
529
+ _response_types_map = {
530
+ '200': "CancelOrdersAndMoveRemainingResponse",
531
+ '400': "LusidValidationProblemDetails",
532
+ }
533
+
534
+ return self.api_client.call_api(
535
+ '/api/ordermanagement/cancelordersandmoveremaining', 'POST',
536
+ _path_params,
537
+ _query_params,
538
+ _header_params,
539
+ body=_body_params,
540
+ post_params=_form_params,
541
+ files=_files,
542
+ response_types_map=_response_types_map,
543
+ auth_settings=_auth_settings,
544
+ async_req=_params.get('async_req'),
545
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
546
+ _preload_content=_params.get('_preload_content', True),
547
+ _request_timeout=_params.get('_request_timeout'),
548
+ opts=_params.get('opts'),
549
+ collection_formats=_collection_formats,
550
+ _request_auth=_params.get('_request_auth'))
551
+
392
552
  @overload
393
553
  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
394
554
  ...