lusid-sdk 2.1.286__py3-none-any.whl → 2.1.308__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
lusid/__init__.py CHANGED
@@ -241,6 +241,7 @@ from lusid.models.compliance_rule_result_v2 import ComplianceRuleResultV2
241
241
  from lusid.models.compliance_rule_template import ComplianceRuleTemplate
242
242
  from lusid.models.compliance_rule_upsert_request import ComplianceRuleUpsertRequest
243
243
  from lusid.models.compliance_rule_upsert_response import ComplianceRuleUpsertResponse
244
+ from lusid.models.compliance_run_configuration import ComplianceRunConfiguration
244
245
  from lusid.models.compliance_run_info import ComplianceRunInfo
245
246
  from lusid.models.compliance_run_info_v2 import ComplianceRunInfoV2
246
247
  from lusid.models.compliance_step import ComplianceStep
@@ -738,6 +739,7 @@ from lusid.models.posting_module_request import PostingModuleRequest
738
739
  from lusid.models.posting_module_response import PostingModuleResponse
739
740
  from lusid.models.posting_module_rule import PostingModuleRule
740
741
  from lusid.models.posting_module_rules_updated_response import PostingModuleRulesUpdatedResponse
742
+ from lusid.models.pre_trade_configuration import PreTradeConfiguration
741
743
  from lusid.models.premium import Premium
742
744
  from lusid.models.previous_fund_valuation_point_data import PreviousFundValuationPointData
743
745
  from lusid.models.previous_nav import PreviousNAV
@@ -1344,6 +1346,7 @@ __all__ = [
1344
1346
  "ComplianceRuleTemplate",
1345
1347
  "ComplianceRuleUpsertRequest",
1346
1348
  "ComplianceRuleUpsertResponse",
1349
+ "ComplianceRunConfiguration",
1347
1350
  "ComplianceRunInfo",
1348
1351
  "ComplianceRunInfoV2",
1349
1352
  "ComplianceStep",
@@ -1841,6 +1844,7 @@ __all__ = [
1841
1844
  "PostingModuleResponse",
1842
1845
  "PostingModuleRule",
1843
1846
  "PostingModuleRulesUpdatedResponse",
1847
+ "PreTradeConfiguration",
1844
1848
  "Premium",
1845
1849
  "PreviousFundValuationPointData",
1846
1850
  "PreviousNAV",
@@ -29,6 +29,7 @@ from typing import Optional
29
29
  from lusid.models.compliance_rule_response import ComplianceRuleResponse
30
30
  from lusid.models.compliance_rule_result_v2 import ComplianceRuleResultV2
31
31
  from lusid.models.compliance_rule_template import ComplianceRuleTemplate
32
+ from lusid.models.compliance_run_configuration import ComplianceRunConfiguration
32
33
  from lusid.models.compliance_run_info_v2 import ComplianceRunInfoV2
33
34
  from lusid.models.compliance_template import ComplianceTemplate
34
35
  from lusid.models.create_compliance_template_request import CreateComplianceTemplateRequest
@@ -1964,6 +1965,196 @@ class ComplianceApi:
1964
1965
  collection_formats=_collection_formats,
1965
1966
  _request_auth=_params.get('_request_auth'))
1966
1967
 
1968
+ @overload
1969
+ async def run_compliance_preview(self, run_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope to save the run results in.")], rule_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope from which to select rules to be run.")], recipe_id_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: the scope of the recipe to be used")], recipe_id_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: The code of the recipe to be used. If left blank, the default recipe will be used.")], compliance_run_configuration : Annotated[Optional[ComplianceRunConfiguration], Field(description="Configuration options for the compliance run.")] = None, **kwargs) -> ComplianceRunInfoV2: # noqa: E501
1970
+ ...
1971
+
1972
+ @overload
1973
+ def run_compliance_preview(self, run_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope to save the run results in.")], rule_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope from which to select rules to be run.")], recipe_id_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: the scope of the recipe to be used")], recipe_id_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: The code of the recipe to be used. If left blank, the default recipe will be used.")], compliance_run_configuration : Annotated[Optional[ComplianceRunConfiguration], Field(description="Configuration options for the compliance run.")] = None, async_req: Optional[bool]=True, **kwargs) -> ComplianceRunInfoV2: # noqa: E501
1974
+ ...
1975
+
1976
+ @validate_arguments
1977
+ def run_compliance_preview(self, run_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope to save the run results in.")], rule_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope from which to select rules to be run.")], recipe_id_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: the scope of the recipe to be used")], recipe_id_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: The code of the recipe to be used. If left blank, the default recipe will be used.")], compliance_run_configuration : Annotated[Optional[ComplianceRunConfiguration], Field(description="Configuration options for the compliance run.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ComplianceRunInfoV2, Awaitable[ComplianceRunInfoV2]]: # noqa: E501
1978
+ """[EARLY ACCESS] RunCompliancePreview: Run a compliance check. # noqa: E501
1979
+
1980
+ Use this endpoint to run a compliance check using rules from a specific scope. # noqa: E501
1981
+ This method makes a synchronous HTTP request by default. To make an
1982
+ asynchronous HTTP request, please pass async_req=True
1983
+
1984
+ >>> thread = api.run_compliance_preview(run_scope, rule_scope, recipe_id_scope, recipe_id_code, compliance_run_configuration, async_req=True)
1985
+ >>> result = thread.get()
1986
+
1987
+ :param run_scope: Required: Scope to save the run results in. (required)
1988
+ :type run_scope: str
1989
+ :param rule_scope: Required: Scope from which to select rules to be run. (required)
1990
+ :type rule_scope: str
1991
+ :param recipe_id_scope: Required: the scope of the recipe to be used (required)
1992
+ :type recipe_id_scope: str
1993
+ :param recipe_id_code: Required: The code of the recipe to be used. If left blank, the default recipe will be used. (required)
1994
+ :type recipe_id_code: str
1995
+ :param compliance_run_configuration: Configuration options for the compliance run.
1996
+ :type compliance_run_configuration: ComplianceRunConfiguration
1997
+ :param async_req: Whether to execute the request asynchronously.
1998
+ :type async_req: bool, optional
1999
+ :param _request_timeout: timeout setting for this request.
2000
+ If one number provided, it will be total request
2001
+ timeout. It can also be a pair (tuple) of
2002
+ (connection, read) timeouts.
2003
+ :return: Returns the result object.
2004
+ If the method is called asynchronously,
2005
+ returns the request thread.
2006
+ :rtype: ComplianceRunInfoV2
2007
+ """
2008
+ kwargs['_return_http_data_only'] = True
2009
+ if '_preload_content' in kwargs:
2010
+ message = "Error! Please call the run_compliance_preview_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2011
+ raise ValueError(message)
2012
+ if async_req is not None:
2013
+ kwargs['async_req'] = async_req
2014
+ return self.run_compliance_preview_with_http_info(run_scope, rule_scope, recipe_id_scope, recipe_id_code, compliance_run_configuration, **kwargs) # noqa: E501
2015
+
2016
+ @validate_arguments
2017
+ def run_compliance_preview_with_http_info(self, run_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope to save the run results in.")], rule_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: Scope from which to select rules to be run.")], recipe_id_scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: the scope of the recipe to be used")], recipe_id_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Required: The code of the recipe to be used. If left blank, the default recipe will be used.")], compliance_run_configuration : Annotated[Optional[ComplianceRunConfiguration], Field(description="Configuration options for the compliance run.")] = None, **kwargs) -> ApiResponse: # noqa: E501
2018
+ """[EARLY ACCESS] RunCompliancePreview: Run a compliance check. # noqa: E501
2019
+
2020
+ Use this endpoint to run a compliance check using rules from a specific scope. # noqa: E501
2021
+ This method makes a synchronous HTTP request by default. To make an
2022
+ asynchronous HTTP request, please pass async_req=True
2023
+
2024
+ >>> thread = api.run_compliance_preview_with_http_info(run_scope, rule_scope, recipe_id_scope, recipe_id_code, compliance_run_configuration, async_req=True)
2025
+ >>> result = thread.get()
2026
+
2027
+ :param run_scope: Required: Scope to save the run results in. (required)
2028
+ :type run_scope: str
2029
+ :param rule_scope: Required: Scope from which to select rules to be run. (required)
2030
+ :type rule_scope: str
2031
+ :param recipe_id_scope: Required: the scope of the recipe to be used (required)
2032
+ :type recipe_id_scope: str
2033
+ :param recipe_id_code: Required: The code of the recipe to be used. If left blank, the default recipe will be used. (required)
2034
+ :type recipe_id_code: str
2035
+ :param compliance_run_configuration: Configuration options for the compliance run.
2036
+ :type compliance_run_configuration: ComplianceRunConfiguration
2037
+ :param async_req: Whether to execute the request asynchronously.
2038
+ :type async_req: bool, optional
2039
+ :param _preload_content: if False, the ApiResponse.data will
2040
+ be set to none and raw_data will store the
2041
+ HTTP response body without reading/decoding.
2042
+ Default is True.
2043
+ :type _preload_content: bool, optional
2044
+ :param _return_http_data_only: response data instead of ApiResponse
2045
+ object with status code, headers, etc
2046
+ :type _return_http_data_only: bool, optional
2047
+ :param _request_timeout: timeout setting for this request. If one
2048
+ number provided, it will be total request
2049
+ timeout. It can also be a pair (tuple) of
2050
+ (connection, read) timeouts.
2051
+ :param _request_auth: set to override the auth_settings for an a single
2052
+ request; this effectively ignores the authentication
2053
+ in the spec for a single request.
2054
+ :type _request_auth: dict, optional
2055
+ :type _content_type: string, optional: force content-type for the request
2056
+ :return: Returns the result object.
2057
+ If the method is called asynchronously,
2058
+ returns the request thread.
2059
+ :rtype: tuple(ComplianceRunInfoV2, status_code(int), headers(HTTPHeaderDict))
2060
+ """
2061
+
2062
+ _params = locals()
2063
+
2064
+ _all_params = [
2065
+ 'run_scope',
2066
+ 'rule_scope',
2067
+ 'recipe_id_scope',
2068
+ 'recipe_id_code',
2069
+ 'compliance_run_configuration'
2070
+ ]
2071
+ _all_params.extend(
2072
+ [
2073
+ 'async_req',
2074
+ '_return_http_data_only',
2075
+ '_preload_content',
2076
+ '_request_timeout',
2077
+ '_request_auth',
2078
+ '_content_type',
2079
+ '_headers'
2080
+ ]
2081
+ )
2082
+
2083
+ # validate the arguments
2084
+ for _key, _val in _params['kwargs'].items():
2085
+ if _key not in _all_params:
2086
+ raise ApiTypeError(
2087
+ "Got an unexpected keyword argument '%s'"
2088
+ " to method run_compliance_preview" % _key
2089
+ )
2090
+ _params[_key] = _val
2091
+ del _params['kwargs']
2092
+
2093
+ _collection_formats = {}
2094
+
2095
+ # process the path parameters
2096
+ _path_params = {}
2097
+
2098
+ # process the query parameters
2099
+ _query_params = []
2100
+ if _params.get('run_scope') is not None: # noqa: E501
2101
+ _query_params.append(('runScope', _params['run_scope']))
2102
+
2103
+ if _params.get('rule_scope') is not None: # noqa: E501
2104
+ _query_params.append(('ruleScope', _params['rule_scope']))
2105
+
2106
+ if _params.get('recipe_id_scope') is not None: # noqa: E501
2107
+ _query_params.append(('recipeIdScope', _params['recipe_id_scope']))
2108
+
2109
+ if _params.get('recipe_id_code') is not None: # noqa: E501
2110
+ _query_params.append(('recipeIdCode', _params['recipe_id_code']))
2111
+
2112
+ # process the header parameters
2113
+ _header_params = dict(_params.get('_headers', {}))
2114
+ # process the form parameters
2115
+ _form_params = []
2116
+ _files = {}
2117
+ # process the body parameter
2118
+ _body_params = None
2119
+ if _params['compliance_run_configuration'] is not None:
2120
+ _body_params = _params['compliance_run_configuration']
2121
+
2122
+ # set the HTTP header `Accept`
2123
+ _header_params['Accept'] = self.api_client.select_header_accept(
2124
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
2125
+
2126
+ # set the HTTP header `Content-Type`
2127
+ _content_types_list = _params.get('_content_type',
2128
+ self.api_client.select_header_content_type(
2129
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
2130
+ if _content_types_list:
2131
+ _header_params['Content-Type'] = _content_types_list
2132
+
2133
+ # authentication setting
2134
+ _auth_settings = ['oauth2'] # noqa: E501
2135
+
2136
+ _response_types_map = {
2137
+ '200': "ComplianceRunInfoV2",
2138
+ '400': "LusidValidationProblemDetails",
2139
+ }
2140
+
2141
+ return self.api_client.call_api(
2142
+ '/api/compliance/preview/runs', 'POST',
2143
+ _path_params,
2144
+ _query_params,
2145
+ _header_params,
2146
+ body=_body_params,
2147
+ post_params=_form_params,
2148
+ files=_files,
2149
+ response_types_map=_response_types_map,
2150
+ auth_settings=_auth_settings,
2151
+ async_req=_params.get('async_req'),
2152
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
2153
+ _preload_content=_params.get('_preload_content', True),
2154
+ _request_timeout=_params.get('_request_timeout'),
2155
+ collection_formats=_collection_formats,
2156
+ _request_auth=_params.get('_request_auth'))
2157
+
1967
2158
  @overload
1968
2159
  async def update_compliance_template(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Compliance Rule Template.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Compliance Rule Template.")], update_compliance_template_request : Annotated[UpdateComplianceTemplateRequest, Field(..., description="Request to update a compliance rule template.")], **kwargs) -> ComplianceRuleTemplate: # noqa: E501
1969
2160
  ...
lusid/api/scopes_api.py CHANGED
@@ -20,7 +20,9 @@ from pydantic.v1 import validate_arguments, ValidationError
20
20
  from typing import overload, Optional, Union, Awaitable
21
21
 
22
22
  from typing_extensions import Annotated
23
- from pydantic.v1 import Field, constr, validator
23
+ from datetime import datetime
24
+
25
+ from pydantic.v1 import Field, conint, constr, validator
24
26
 
25
27
  from typing import Optional
26
28
 
@@ -47,26 +49,32 @@ class ScopesApi:
47
49
  self.api_client = api_client
48
50
 
49
51
  @overload
50
- async def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], **kwargs) -> ResourceListOfScopeDefinition: # noqa: E501
52
+ async def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.")] = None, **kwargs) -> ResourceListOfScopeDefinition: # noqa: E501
51
53
  ...
52
54
 
53
55
  @overload
54
- def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], async_req: Optional[bool]=True, **kwargs) -> ResourceListOfScopeDefinition: # noqa: E501
56
+ def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfScopeDefinition: # noqa: E501
55
57
  ...
56
58
 
57
59
  @validate_arguments
58
- def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfScopeDefinition, Awaitable[ResourceListOfScopeDefinition]]: # noqa: E501
60
+ def list_entity_scopes(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfScopeDefinition, Awaitable[ResourceListOfScopeDefinition]]: # noqa: E501
59
61
  """ListEntityScopes: List Entity Scopes # noqa: E501
60
62
 
61
63
  List all the scopes for a given entity type that contain data. # noqa: E501
62
64
  This method makes a synchronous HTTP request by default. To make an
63
65
  asynchronous HTTP request, please pass async_req=True
64
66
 
65
- >>> thread = api.list_entity_scopes(entity_type, async_req=True)
67
+ >>> thread = api.list_entity_scopes(entity_type, as_at, page, limit, async_req=True)
66
68
  >>> result = thread.get()
67
69
 
68
70
  :param entity_type: The entity type to list scopes for. (required)
69
71
  :type entity_type: str
72
+ :param as_at: The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.
73
+ :type as_at: datetime
74
+ :param page: The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.
75
+ :type page: str
76
+ :param limit: When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.
77
+ :type limit: int
70
78
  :param async_req: Whether to execute the request asynchronously.
71
79
  :type async_req: bool, optional
72
80
  :param _request_timeout: timeout setting for this request.
@@ -84,21 +92,27 @@ class ScopesApi:
84
92
  raise ValueError(message)
85
93
  if async_req is not None:
86
94
  kwargs['async_req'] = async_req
87
- return self.list_entity_scopes_with_http_info(entity_type, **kwargs) # noqa: E501
95
+ return self.list_entity_scopes_with_http_info(entity_type, as_at, page, limit, **kwargs) # noqa: E501
88
96
 
89
97
  @validate_arguments
90
- def list_entity_scopes_with_http_info(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], **kwargs) -> ApiResponse: # noqa: E501
98
+ def list_entity_scopes_with_http_info(self, entity_type : Annotated[constr(strict=True, max_length=100, min_length=0), Field(..., description="The entity type to list scopes for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
91
99
  """ListEntityScopes: List Entity Scopes # noqa: E501
92
100
 
93
101
  List all the scopes for a given entity type that contain data. # noqa: E501
94
102
  This method makes a synchronous HTTP request by default. To make an
95
103
  asynchronous HTTP request, please pass async_req=True
96
104
 
97
- >>> thread = api.list_entity_scopes_with_http_info(entity_type, async_req=True)
105
+ >>> thread = api.list_entity_scopes_with_http_info(entity_type, as_at, page, limit, async_req=True)
98
106
  >>> result = thread.get()
99
107
 
100
108
  :param entity_type: The entity type to list scopes for. (required)
101
109
  :type entity_type: str
110
+ :param as_at: The asAt datetime at which to retrieve scopes. Defaults to latest datetime if not specified.
111
+ :type as_at: datetime
112
+ :param page: The pagination token to use to continue listing scopes from a previous call to list scopes. This value is returned from the previous call. If a pagination token is provided, the limit and asAt fields must not have changed since the original request.
113
+ :type page: str
114
+ :param limit: When paginating, limit the number of returned results to this number. Defaults to 100 if not specified.
115
+ :type limit: int
102
116
  :param async_req: Whether to execute the request asynchronously.
103
117
  :type async_req: bool, optional
104
118
  :param _preload_content: if False, the ApiResponse.data will
@@ -127,7 +141,10 @@ class ScopesApi:
127
141
  _params = locals()
128
142
 
129
143
  _all_params = [
130
- 'entity_type'
144
+ 'entity_type',
145
+ 'as_at',
146
+ 'page',
147
+ 'limit'
131
148
  ]
132
149
  _all_params.extend(
133
150
  [
@@ -161,6 +178,18 @@ class ScopesApi:
161
178
 
162
179
  # process the query parameters
163
180
  _query_params = []
181
+ if _params.get('as_at') is not None: # noqa: E501
182
+ if isinstance(_params['as_at'], datetime):
183
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
184
+ else:
185
+ _query_params.append(('asAt', _params['as_at']))
186
+
187
+ if _params.get('page') is not None: # noqa: E501
188
+ _query_params.append(('page', _params['page']))
189
+
190
+ if _params.get('limit') is not None: # noqa: E501
191
+ _query_params.append(('limit', _params['limit']))
192
+
164
193
  # process the header parameters
165
194
  _header_params = dict(_params.get('_headers', {}))
166
195
  # process the form parameters
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.6719\n"\
376
+ "Version of the API: 0.11.6739\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
lusid/models/__init__.py CHANGED
@@ -162,6 +162,7 @@ from lusid.models.compliance_rule_result_v2 import ComplianceRuleResultV2
162
162
  from lusid.models.compliance_rule_template import ComplianceRuleTemplate
163
163
  from lusid.models.compliance_rule_upsert_request import ComplianceRuleUpsertRequest
164
164
  from lusid.models.compliance_rule_upsert_response import ComplianceRuleUpsertResponse
165
+ from lusid.models.compliance_run_configuration import ComplianceRunConfiguration
165
166
  from lusid.models.compliance_run_info import ComplianceRunInfo
166
167
  from lusid.models.compliance_run_info_v2 import ComplianceRunInfoV2
167
168
  from lusid.models.compliance_step import ComplianceStep
@@ -659,6 +660,7 @@ from lusid.models.posting_module_request import PostingModuleRequest
659
660
  from lusid.models.posting_module_response import PostingModuleResponse
660
661
  from lusid.models.posting_module_rule import PostingModuleRule
661
662
  from lusid.models.posting_module_rules_updated_response import PostingModuleRulesUpdatedResponse
663
+ from lusid.models.pre_trade_configuration import PreTradeConfiguration
662
664
  from lusid.models.premium import Premium
663
665
  from lusid.models.previous_fund_valuation_point_data import PreviousFundValuationPointData
664
666
  from lusid.models.previous_nav import PreviousNAV
@@ -1187,6 +1189,7 @@ __all__ = [
1187
1189
  "ComplianceRuleTemplate",
1188
1190
  "ComplianceRuleUpsertRequest",
1189
1191
  "ComplianceRuleUpsertResponse",
1192
+ "ComplianceRunConfiguration",
1190
1193
  "ComplianceRunInfo",
1191
1194
  "ComplianceRunInfoV2",
1192
1195
  "ComplianceStep",
@@ -1684,6 +1687,7 @@ __all__ = [
1684
1687
  "PostingModuleResponse",
1685
1688
  "PostingModuleRule",
1686
1689
  "PostingModuleRulesUpdatedResponse",
1690
+ "PreTradeConfiguration",
1687
1691
  "Premium",
1688
1692
  "PreviousFundValuationPointData",
1689
1693
  "PreviousNAV",
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.pre_trade_configuration import PreTradeConfiguration
24
+
25
+ class ComplianceRunConfiguration(BaseModel):
26
+ """
27
+ Specification object for the configuration parameters of a compliance run # noqa: E501
28
+ """
29
+ pre_trade_configuration: PreTradeConfiguration = Field(..., alias="preTradeConfiguration")
30
+ __properties = ["preTradeConfiguration"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> ComplianceRunConfiguration:
47
+ """Create an instance of ComplianceRunConfiguration from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of pre_trade_configuration
57
+ if self.pre_trade_configuration:
58
+ _dict['preTradeConfiguration'] = self.pre_trade_configuration.to_dict()
59
+ return _dict
60
+
61
+ @classmethod
62
+ def from_dict(cls, obj: dict) -> ComplianceRunConfiguration:
63
+ """Create an instance of ComplianceRunConfiguration from a dict"""
64
+ if obj is None:
65
+ return None
66
+
67
+ if not isinstance(obj, dict):
68
+ return ComplianceRunConfiguration.parse_obj(obj)
69
+
70
+ _obj = ComplianceRunConfiguration.parse_obj({
71
+ "pre_trade_configuration": PreTradeConfiguration.from_dict(obj.get("preTradeConfiguration")) if obj.get("preTradeConfiguration") is not None else None
72
+ })
73
+ return _obj
@@ -35,12 +35,12 @@ class FundConfiguration(BaseModel):
35
35
  display_name: Optional[StrictStr] = Field(None, alias="displayName", description="The name of the FundConfiguration.")
36
36
  description: Optional[StrictStr] = Field(None, description="A description for the FundConfiguration.")
37
37
  dealing_rule: Optional[ComponentRule] = Field(None, alias="dealingRule")
38
- fund_pnl_exclusion_rule: Optional[ComponentRule] = Field(None, alias="fundPnlExclusionRule")
38
+ fund_pnl_rule: Optional[ComponentRule] = Field(None, alias="fundPnlRule")
39
39
  back_out_rule: Optional[ComponentRule] = Field(None, alias="backOutRule")
40
40
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the Fund Configuration.")
41
41
  version: Optional[Version] = None
42
42
  links: Optional[conlist(Link)] = None
43
- __properties = ["href", "id", "displayName", "description", "dealingRule", "fundPnlExclusionRule", "backOutRule", "properties", "version", "links"]
43
+ __properties = ["href", "id", "displayName", "description", "dealingRule", "fundPnlRule", "backOutRule", "properties", "version", "links"]
44
44
 
45
45
  class Config:
46
46
  """Pydantic configuration"""
@@ -72,9 +72,9 @@ class FundConfiguration(BaseModel):
72
72
  # override the default output from pydantic by calling `to_dict()` of dealing_rule
73
73
  if self.dealing_rule:
74
74
  _dict['dealingRule'] = self.dealing_rule.to_dict()
75
- # override the default output from pydantic by calling `to_dict()` of fund_pnl_exclusion_rule
76
- if self.fund_pnl_exclusion_rule:
77
- _dict['fundPnlExclusionRule'] = self.fund_pnl_exclusion_rule.to_dict()
75
+ # override the default output from pydantic by calling `to_dict()` of fund_pnl_rule
76
+ if self.fund_pnl_rule:
77
+ _dict['fundPnlRule'] = self.fund_pnl_rule.to_dict()
78
78
  # override the default output from pydantic by calling `to_dict()` of back_out_rule
79
79
  if self.back_out_rule:
80
80
  _dict['backOutRule'] = self.back_out_rule.to_dict()
@@ -137,7 +137,7 @@ class FundConfiguration(BaseModel):
137
137
  "display_name": obj.get("displayName"),
138
138
  "description": obj.get("description"),
139
139
  "dealing_rule": ComponentRule.from_dict(obj.get("dealingRule")) if obj.get("dealingRule") is not None else None,
140
- "fund_pnl_exclusion_rule": ComponentRule.from_dict(obj.get("fundPnlExclusionRule")) if obj.get("fundPnlExclusionRule") is not None else None,
140
+ "fund_pnl_rule": ComponentRule.from_dict(obj.get("fundPnlRule")) if obj.get("fundPnlRule") is not None else None,
141
141
  "back_out_rule": ComponentRule.from_dict(obj.get("backOutRule")) if obj.get("backOutRule") is not None else None,
142
142
  "properties": dict(
143
143
  (_k, ModelProperty.from_dict(_v))
@@ -31,10 +31,10 @@ class FundConfigurationRequest(BaseModel):
31
31
  display_name: Optional[constr(strict=True, max_length=256, min_length=1)] = Field(None, alias="displayName", description="The name of the Fund.")
32
32
  description: Optional[constr(strict=True, max_length=1024, min_length=0)] = Field(None, description="A description for the Fund.")
33
33
  dealing_rule: ComponentRule = Field(..., alias="dealingRule")
34
- fund_pnl_exclusion_rule: Optional[ComponentRule] = Field(None, alias="fundPnlExclusionRule")
34
+ fund_pnl_rule: ComponentRule = Field(..., alias="fundPnlRule")
35
35
  back_out_rule: ComponentRule = Field(..., alias="backOutRule")
36
36
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the Fund Configuration.")
37
- __properties = ["code", "displayName", "description", "dealingRule", "fundPnlExclusionRule", "backOutRule", "properties"]
37
+ __properties = ["code", "displayName", "description", "dealingRule", "fundPnlRule", "backOutRule", "properties"]
38
38
 
39
39
  @validator('code')
40
40
  def code_validate_regular_expression(cls, value):
@@ -80,9 +80,9 @@ class FundConfigurationRequest(BaseModel):
80
80
  # override the default output from pydantic by calling `to_dict()` of dealing_rule
81
81
  if self.dealing_rule:
82
82
  _dict['dealingRule'] = self.dealing_rule.to_dict()
83
- # override the default output from pydantic by calling `to_dict()` of fund_pnl_exclusion_rule
84
- if self.fund_pnl_exclusion_rule:
85
- _dict['fundPnlExclusionRule'] = self.fund_pnl_exclusion_rule.to_dict()
83
+ # override the default output from pydantic by calling `to_dict()` of fund_pnl_rule
84
+ if self.fund_pnl_rule:
85
+ _dict['fundPnlRule'] = self.fund_pnl_rule.to_dict()
86
86
  # override the default output from pydantic by calling `to_dict()` of back_out_rule
87
87
  if self.back_out_rule:
88
88
  _dict['backOutRule'] = self.back_out_rule.to_dict()
@@ -124,7 +124,7 @@ class FundConfigurationRequest(BaseModel):
124
124
  "display_name": obj.get("displayName"),
125
125
  "description": obj.get("description"),
126
126
  "dealing_rule": ComponentRule.from_dict(obj.get("dealingRule")) if obj.get("dealingRule") is not None else None,
127
- "fund_pnl_exclusion_rule": ComponentRule.from_dict(obj.get("fundPnlExclusionRule")) if obj.get("fundPnlExclusionRule") is not None else None,
127
+ "fund_pnl_rule": ComponentRule.from_dict(obj.get("fundPnlRule")) if obj.get("fundPnlRule") is not None else None,
128
128
  "back_out_rule": ComponentRule.from_dict(obj.get("backOutRule")) if obj.get("backOutRule") is not None else None,
129
129
  "properties": dict(
130
130
  (_k, ModelProperty.from_dict(_v))
@@ -0,0 +1,69 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+
24
+ class PreTradeConfiguration(BaseModel):
25
+ """
26
+ Specification object for the pre trade configuration parameters of a compliance run # noqa: E501
27
+ """
28
+ include_entity_types: constr(strict=True, min_length=1) = Field(..., alias="includeEntityTypes", description="Controls whether Orders and Allocations orders are included in the Portfolio valuation done for this compliance run. Valid values are: None (to account for Transactions only), Allocations (to include Allocations and Transactions) and OrdersAndAllocations (to include Orders, Allocations and Transactions).")
29
+ __properties = ["includeEntityTypes"]
30
+
31
+ class Config:
32
+ """Pydantic configuration"""
33
+ allow_population_by_field_name = True
34
+ validate_assignment = True
35
+
36
+ def to_str(self) -> str:
37
+ """Returns the string representation of the model using alias"""
38
+ return pprint.pformat(self.dict(by_alias=True))
39
+
40
+ def to_json(self) -> str:
41
+ """Returns the JSON representation of the model using alias"""
42
+ return json.dumps(self.to_dict())
43
+
44
+ @classmethod
45
+ def from_json(cls, json_str: str) -> PreTradeConfiguration:
46
+ """Create an instance of PreTradeConfiguration from a JSON string"""
47
+ return cls.from_dict(json.loads(json_str))
48
+
49
+ def to_dict(self):
50
+ """Returns the dictionary representation of the model using alias"""
51
+ _dict = self.dict(by_alias=True,
52
+ exclude={
53
+ },
54
+ exclude_none=True)
55
+ return _dict
56
+
57
+ @classmethod
58
+ def from_dict(cls, obj: dict) -> PreTradeConfiguration:
59
+ """Create an instance of PreTradeConfiguration from a dict"""
60
+ if obj is None:
61
+ return None
62
+
63
+ if not isinstance(obj, dict):
64
+ return PreTradeConfiguration.parse_obj(obj)
65
+
66
+ _obj = PreTradeConfiguration.parse_obj({
67
+ "include_entity_types": obj.get("includeEntityTypes")
68
+ })
69
+ return _obj
@@ -44,8 +44,9 @@ class StagedModification(BaseModel):
44
44
  entity_unique_id: Optional[StrictStr] = Field(None, alias="entityUniqueId", description="The unique Id of the entity the staged modification applies to.")
45
45
  requested_changes: Optional[RequestedChanges] = Field(None, alias="requestedChanges")
46
46
  entity_hrefs: Optional[StagedModificationsEntityHrefs] = Field(None, alias="entityHrefs")
47
+ display_name: Optional[StrictStr] = Field(None, alias="displayName", description="The display name of the entity the staged modification applies to.")
47
48
  links: Optional[conlist(Link)] = None
48
- __properties = ["id", "asAtStaged", "userIdStaged", "requestedIdStaged", "action", "stagingRule", "decisions", "decisionsCount", "status", "entityType", "scope", "entityUniqueId", "requestedChanges", "entityHrefs", "links"]
49
+ __properties = ["id", "asAtStaged", "userIdStaged", "requestedIdStaged", "action", "stagingRule", "decisions", "decisionsCount", "status", "entityType", "scope", "entityUniqueId", "requestedChanges", "entityHrefs", "displayName", "links"]
49
50
 
50
51
  class Config:
51
52
  """Pydantic configuration"""
@@ -139,6 +140,11 @@ class StagedModification(BaseModel):
139
140
  if self.entity_unique_id is None and "entity_unique_id" in self.__fields_set__:
140
141
  _dict['entityUniqueId'] = None
141
142
 
143
+ # set to None if display_name (nullable) is None
144
+ # and __fields_set__ contains the field
145
+ if self.display_name is None and "display_name" in self.__fields_set__:
146
+ _dict['displayName'] = None
147
+
142
148
  # set to None if links (nullable) is None
143
149
  # and __fields_set__ contains the field
144
150
  if self.links is None and "links" in self.__fields_set__:
@@ -170,6 +176,7 @@ class StagedModification(BaseModel):
170
176
  "entity_unique_id": obj.get("entityUniqueId"),
171
177
  "requested_changes": RequestedChanges.from_dict(obj.get("requestedChanges")) if obj.get("requestedChanges") is not None else None,
172
178
  "entity_hrefs": StagedModificationsEntityHrefs.from_dict(obj.get("entityHrefs")) if obj.get("entityHrefs") is not None else None,
179
+ "display_name": obj.get("displayName"),
173
180
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
174
181
  })
175
182
  return _obj
@@ -27,13 +27,13 @@ class TransactionConfigurationMovementData(BaseModel):
27
27
  """
28
28
  TransactionConfigurationMovementData
29
29
  """
30
- movement_types: StrictStr = Field(..., alias="movementTypes", description=". The available values are: Settlement, Traded, StockMovement, FutureCash, Commitment, Receivable, CashSettlement, CashForward, CashCommitment, CashReceivable, Accrual, CashAccrual, ForwardFx, CashFxForward, UnsettledCashTypes, Carry, CarryAsPnl, VariationMargin, Capital, Fee")
30
+ movement_types: StrictStr = Field(..., alias="movementTypes", description="Movement types determine the impact of the movement on the holdings. The available values are: Settlement, Traded, StockMovement, FutureCash, Commitment, Receivable, CashSettlement, CashForward, CashCommitment, CashReceivable, Accrual, CashAccrual, ForwardFx, CashFxForward, UnsettledCashTypes, Carry, CarryAsPnl, VariationMargin, Capital, Fee. The available values are: Settlement, Traded, StockMovement, FutureCash, Commitment, Receivable, CashSettlement, CashForward, CashCommitment, CashReceivable, Accrual, CashAccrual, ForwardFx, CashFxForward, UnsettledCashTypes, Carry, CarryAsPnl, VariationMargin, Capital, Fee")
31
31
  side: constr(strict=True, min_length=1) = Field(..., description="The Side determines which of the fields from our transaction are used to generate the Movement. Side1 means the 'security' side of the transaction, ie the Instrument and Units; Side2 means the 'cash' side, ie the Total Consideration")
32
32
  direction: StrictInt = Field(..., description=" A multiplier to apply to Transaction amounts; the values are -1 to indicate to reverse the signs and 1 to indicate to use the signed values from the Transaction directly. For a typical Transaction with unsigned values, 1 means increase, -1 means decrease")
33
33
  properties: Optional[Dict[str, PerpetualProperty]] = Field(None, description="The properties associated with the underlying Movement")
34
34
  mappings: Optional[conlist(TransactionPropertyMapping)] = Field(None, description="This allows you to map a transaction property to a property on the underlying holding")
35
35
  name: Optional[StrictStr] = Field(None, description="The movement name (optional)")
36
- movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment' and 'IncludesTradedInterest'. A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
36
+ movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment', 'IncludesTradedInterest' and 'Virtual' (works only with the movement type 'StockMovement'). A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
37
37
  __properties = ["movementTypes", "side", "direction", "properties", "mappings", "name", "movementOptions"]
38
38
 
39
39
  @validator('movement_types')
@@ -33,7 +33,7 @@ class TransactionConfigurationMovementDataRequest(BaseModel):
33
33
  properties: Optional[Dict[str, PerpetualProperty]] = Field(None, description="The properties associated with the underlying Movement.")
34
34
  mappings: Optional[conlist(TransactionPropertyMappingRequest)] = Field(None, description="This allows you to map a transaction property to a property on the underlying holding.")
35
35
  name: Optional[StrictStr] = Field(None, description="The movement name (optional)")
36
- movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment' and 'IncludesTradedInterest'. A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
36
+ movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment', 'IncludesTradedInterest' and 'Virtual' (works only with the movement type 'StockMovement'). A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
37
37
  __properties = ["movementTypes", "side", "direction", "properties", "mappings", "name", "movementOptions"]
38
38
 
39
39
  @validator('movement_types')
@@ -27,13 +27,13 @@ class TransactionTypeMovement(BaseModel):
27
27
  """
28
28
  TransactionTypeMovement
29
29
  """
30
- movement_types: constr(strict=True, min_length=1) = Field(..., alias="movementTypes", description="Movement types determine the impact of the movement on the holdings")
30
+ movement_types: constr(strict=True, min_length=1) = Field(..., alias="movementTypes", description="Movement types determine the impact of the movement on the holdings. The available values are: Settlement, Traded, StockMovement, FutureCash, Commitment, Receivable, CashSettlement, CashForward, CashCommitment, CashReceivable, Accrual, CashAccrual, ForwardFx, CashFxForward, UnsettledCashTypes, Carry, CarryAsPnl, VariationMargin, Capital, Fee.")
31
31
  side: constr(strict=True, max_length=64, min_length=1) = Field(..., description="The Side determines which of the fields from our transaction are used to generate the Movement. Side1 means the 'security' side of the transaction, ie the Instrument and Units; Side2 means the 'cash' side, ie the Total Consideration")
32
32
  direction: StrictInt = Field(..., description=" A multiplier to apply to Transaction amounts; the values are -1 to indicate to reverse the signs and 1 to indicate to use the signed values from the Transaction directly. For a typical Transaction with unsigned values, 1 means increase, -1 means decrease")
33
33
  properties: Optional[Dict[str, PerpetualProperty]] = Field(None, description="The properties associated with the underlying Movement")
34
34
  mappings: Optional[conlist(TransactionTypePropertyMapping, max_items=5000)] = Field(None, description="This allows you to map a transaction property to a property on the underlying holding")
35
35
  name: Optional[constr(strict=True, max_length=512, min_length=1)] = Field(None, description="The movement name (optional)")
36
- movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment' and 'IncludesTradedInterest'. A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
36
+ movement_options: Optional[conlist(StrictStr)] = Field(None, alias="movementOptions", description="Allows extra specifications for the movement. The options currently available are 'DirectAdjustment', 'IncludesTradedInterest' and 'Virtual' (works only with the movement type 'StockMovement'). A movement type of 'StockMovement' with an option of 'DirectAdjusment' will allow you to adjust the units of a holding without affecting its cost base. You will, therefore, be able to reflect the impact of a stock split by loading a Transaction.")
37
37
  settlement_date_override: Optional[StrictStr] = Field(None, alias="settlementDateOverride", description="Optional property key that must be in the Transaction domain when specified. When the movement is processed and the transaction has this property set to a valid date, then the property value will override the SettlementDate of the transaction.")
38
38
  condition: Optional[constr(strict=True, max_length=16384, min_length=0)] = Field(None, description="The condition that the transaction must satisfy to generate the movement, such as: Portfolio.BaseCurrency eq 'GBP'. The condition can contain fields and properties from transactions and portfolios. If no condition is provided, the movement will apply for all transactions of this type.")
39
39
  __properties = ["movementTypes", "side", "direction", "properties", "mappings", "name", "movementOptions", "settlementDateOverride", "condition"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.286
3
+ Version: 2.1.308
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -29,8 +29,8 @@ FINBOURNE Technology
29
29
 
30
30
  This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
31
31
 
32
- - API version: 0.11.6719
33
- - Package version: 2.1.286
32
+ - API version: 0.11.6739
33
+ - Package version: 2.1.308
34
34
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
35
35
  For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
36
36
 
@@ -318,6 +318,7 @@ Class | Method | HTTP request | Description
318
318
  *ComplianceApi* | [**list_compliance_runs**](docs/ComplianceApi.md#list_compliance_runs) | **GET** /api/compliance/runs | [EARLY ACCESS] ListComplianceRuns: List historical compliance run identifiers.
319
319
  *ComplianceApi* | [**list_compliance_templates**](docs/ComplianceApi.md#list_compliance_templates) | **GET** /api/compliance/templates | [EARLY ACCESS] ListComplianceTemplates: List compliance templates.
320
320
  *ComplianceApi* | [**run_compliance**](docs/ComplianceApi.md#run_compliance) | **POST** /api/compliance/runs | [EARLY ACCESS] RunCompliance: Run a compliance check.
321
+ *ComplianceApi* | [**run_compliance_preview**](docs/ComplianceApi.md#run_compliance_preview) | **POST** /api/compliance/preview/runs | [EARLY ACCESS] RunCompliancePreview: Run a compliance check.
321
322
  *ComplianceApi* | [**update_compliance_template**](docs/ComplianceApi.md#update_compliance_template) | **PUT** /api/compliance/templates/{scope}/{code} | [EARLY ACCESS] UpdateComplianceTemplate: Update a ComplianceRuleTemplate
322
323
  *ComplianceApi* | [**upsert_compliance_rule**](docs/ComplianceApi.md#upsert_compliance_rule) | **POST** /api/compliance/rules | [EARLY ACCESS] UpsertComplianceRule: Upsert a compliance rule.
323
324
  *ComplianceApi* | [**upsert_compliance_run_summary**](docs/ComplianceApi.md#upsert_compliance_run_summary) | **POST** /api/compliance/runs/summary | [EARLY ACCESS] UpsertComplianceRunSummary: Upsert a compliance run summary.
@@ -906,6 +907,7 @@ Class | Method | HTTP request | Description
906
907
  - [ComplianceRuleTemplate](docs/ComplianceRuleTemplate.md)
907
908
  - [ComplianceRuleUpsertRequest](docs/ComplianceRuleUpsertRequest.md)
908
909
  - [ComplianceRuleUpsertResponse](docs/ComplianceRuleUpsertResponse.md)
910
+ - [ComplianceRunConfiguration](docs/ComplianceRunConfiguration.md)
909
911
  - [ComplianceRunInfo](docs/ComplianceRunInfo.md)
910
912
  - [ComplianceRunInfoV2](docs/ComplianceRunInfoV2.md)
911
913
  - [ComplianceStep](docs/ComplianceStep.md)
@@ -1403,6 +1405,7 @@ Class | Method | HTTP request | Description
1403
1405
  - [PostingModuleResponse](docs/PostingModuleResponse.md)
1404
1406
  - [PostingModuleRule](docs/PostingModuleRule.md)
1405
1407
  - [PostingModuleRulesUpdatedResponse](docs/PostingModuleRulesUpdatedResponse.md)
1408
+ - [PreTradeConfiguration](docs/PreTradeConfiguration.md)
1406
1409
  - [Premium](docs/Premium.md)
1407
1410
  - [PreviousFundValuationPointData](docs/PreviousFundValuationPointData.md)
1408
1411
  - [PreviousNAV](docs/PreviousNAV.md)
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=Ti20jnkQMwRp6ov9IEJP_Ka_aoXAnRILs6TQuXr-JDM,113400
1
+ lusid/__init__.py,sha256=DK7MQXQVc3LyFRUWNVJcJ6zM6-F-G3yoZK9wRipZWdY,113615
2
2
  lusid/api/__init__.py,sha256=EuHJI-4kmmibn1IVmY9akKMT-R1Bnth9msFll5hlBGY,5652
3
3
  lusid/api/abor_api.py,sha256=AvgsHuWE7qRSYJhKveBE2htSjHpqqS0VNJrysAfwME0,159655
4
4
  lusid/api/abor_configuration_api.py,sha256=G2bKPtMYOZ2GhUrg-nPJtCa9XIZdZYK7oafcbJWDMP8,64033
@@ -11,7 +11,7 @@ lusid/api/blocks_api.py,sha256=Gpm_8fKo6xRVmpN_1kkpUrrZp7RgL-cuWUkXCz88koI,43529
11
11
  lusid/api/calendars_api.py,sha256=tpLX1Tazzy-_HlFpnFxqwluJPWTzCWQzF_cP8xxZ-rk,126864
12
12
  lusid/api/chart_of_accounts_api.py,sha256=FhElAjmMguluXl8D-LZkEbrdYvxcpCVhhUlQcng4xSs,386384
13
13
  lusid/api/complex_market_data_api.py,sha256=51XMZq9VzRXOLJxxyqTor5Jbjm-64AeURDB78RQseSI,48558
14
- lusid/api/compliance_api.py,sha256=8tjiMMpUN4jGlFF9Ui6LkHOyr91FpH23F3l1q-zHnf0,140689
14
+ lusid/api/compliance_api.py,sha256=emRbgGqr0Eevwts8WWTDdc9NMkg6LaocMNlAzad5_B8,153085
15
15
  lusid/api/configuration_recipe_api.py,sha256=FxqzoH-8_iIxi84Nq3yMJO1ueNX8cATg-h9SMwvg2Zc,101713
16
16
  lusid/api/conventions_api.py,sha256=EFDtbR8rhb3sFkuNAh7r8ND0Mqj3BXf_54zYaUeMBiA,106475
17
17
  lusid/api/corporate_action_sources_api.py,sha256=zsB_oU6OmxQCRAa8tHxvrc_nLDYM1sqsXQt7GoAATv0,102152
@@ -53,7 +53,7 @@ lusid/api/relations_api.py,sha256=ka5L0sQkPNLiQS8vXhcOk0EYkJu2LIuqInmLGnoZSLA,22
53
53
  lusid/api/relationship_definitions_api.py,sha256=30MXQITMjIYXdedMRYH7lrj-rPhkIhhJN-yfB_rWAtU,54693
54
54
  lusid/api/relationships_api.py,sha256=CkqKKRKJm39FJXIKUgMa6py12fq1HN1iLC8v9MIBf_8,19956
55
55
  lusid/api/schemas_api.py,sha256=RrFrHu6dNw060nLQ6kpWa-eRPBlv8prk-ldGi04mgEU,30928
56
- lusid/api/scopes_api.py,sha256=p8OnCyJtsYrM0I-jzmHfhMJKAXzWkl52LtGVQw5DMtc,16390
56
+ lusid/api/scopes_api.py,sha256=RZQAp2jCrG_uwd9wccrvmXs5ekoIie7WdfzARBwXRR0,21317
57
57
  lusid/api/scripted_translation_api.py,sha256=jOeKhCjDpq3M1FU9mAH-2sbW_O3NhVuirKPtJrDbEgo,84048
58
58
  lusid/api/search_api.py,sha256=Y6wgyv5H6EDEICDYERU_jXdAFmr0GPEe8r2BnM0KzXI,58533
59
59
  lusid/api/sequences_api.py,sha256=NUACzaG_zcloEMFwuIxI2c2MiQNmkBULUq7qeNvZ0GQ,37460
@@ -68,7 +68,7 @@ lusid/api/transaction_portfolios_api.py,sha256=7G5m6iTQXTKCc6ASdxnlVJjvFascHxEgD
68
68
  lusid/api/translation_api.py,sha256=xTAaKEW96JTDIZBXCjxSguCa7Gz4oVd5jdObUE2egwo,20092
69
69
  lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
70
70
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
71
- lusid/configuration.py,sha256=_xeD9ANzRag139LqtDrPpR4TSDpNHtLqGDDGGS4-58g,14404
71
+ lusid/configuration.py,sha256=QzrEjTcALmtWMm6T8UFgG9n-BEJAEluQ5jISLxkQA1Q,14404
72
72
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
73
73
  lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
74
74
  lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
@@ -82,7 +82,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
82
82
  lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
83
83
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
84
84
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
85
- lusid/models/__init__.py,sha256=twzzDSiN0N4ymo1z4-WK0XaeR60x8D1TyOLkaB9Brzc,106716
85
+ lusid/models/__init__.py,sha256=g0_5oFHveza3kSXyQDwbIEbZeofj6FbyGgPctzg3Sow,106931
86
86
  lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
87
87
  lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
88
88
  lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
@@ -231,6 +231,7 @@ lusid/models/compliance_rule_result_v2.py,sha256=LjNimUWqoOQR7np1_WGtLxG92lUOb4p
231
231
  lusid/models/compliance_rule_template.py,sha256=3Bp2MCRKIWY4RBxsfAfwGtjt5JlFLllDQ11yeQglEBI,6358
232
232
  lusid/models/compliance_rule_upsert_request.py,sha256=xBJDzaTMJsoUltHJ3_qbBwGff5BH6R877MHepb01p8M,7163
233
233
  lusid/models/compliance_rule_upsert_response.py,sha256=XMXmAkYSvIBvV8w12TjvhIkCBNBtCzYA3OQ64zN7lJw,2503
234
+ lusid/models/compliance_run_configuration.py,sha256=8rP4EyJcv7fKrFPuvAD7JezkC7XqZR4siqUwMaAyxsM,2456
234
235
  lusid/models/compliance_run_info.py,sha256=8wPXKyXzX3Mu2UFZd84qI2c9Wl7nG2ihcFuU2k-UPpE,3437
235
236
  lusid/models/compliance_run_info_v2.py,sha256=z6OnjF92yy5bqqfJg3r4qJ7RgH_t7FIGBZJ8lMpX518,2703
236
237
  lusid/models/compliance_step.py,sha256=gnrckVEVPWDFYQDQs_4s7k1SWiAUvemXzwew0h2uzZU,3943
@@ -413,9 +414,9 @@ lusid/models/forward_rate_agreement.py,sha256=PrTWedcDD8Zr3c7_Z6UrDMKwVtwAFtq5yW
413
414
  lusid/models/from_recipe.py,sha256=paSou6poZf5CHkswKhZXc8jXmVcxj7s7kJXRw4ucbfQ,2261
414
415
  lusid/models/fund.py,sha256=4FENDtVBRDI59lTQ_LdffuIYIPGj7C-LUkL0Wtzn0cc,8958
415
416
  lusid/models/fund_amount.py,sha256=F298PikXvooYgorqtdWwwOmSclzxqNfu6Q1BUK5Yt_E,1879
416
- lusid/models/fund_configuration.py,sha256=rZYEyTyXhq4kOXiAFLGO3shzvfZKN8CXdBpwsE_x8Bs,6754
417
+ lusid/models/fund_configuration.py,sha256=LjXCL02_v9d2MlAFq_a2lHZPMwCTLQKHszt0yHSk5y0,6659
417
418
  lusid/models/fund_configuration_properties.py,sha256=hqKaBSMkSYC5UcWxkgDos41GYnm__6-Q23Z6SDsBgM4,4373
418
- lusid/models/fund_configuration_request.py,sha256=L7grtgaC97bf5rQ7IaJ4u-PRB6FrFW0kZVyXOh8smnM,5787
419
+ lusid/models/fund_configuration_request.py,sha256=pE74oPYKgMuNVGANRIqUV5I4j47VMQc7swDHIHFScNo,5681
419
420
  lusid/models/fund_previous_nav.py,sha256=Vd6qd-nvikHAMjutM1QSYA4xYGWz45NGyLyg2v8pAsE,1930
420
421
  lusid/models/fund_properties.py,sha256=f2PxknZIPrfAXR1MHSJxO1sdj_wNJfmulzYYEqdCByA,4242
421
422
  lusid/models/fund_request.py,sha256=fBU3prGytCvKWfAzP0gHj4VUANarueKwB7r9evPoIEI,8345
@@ -728,6 +729,7 @@ lusid/models/posting_module_request.py,sha256=x6aq23t1GtSpg60mAe3gXTRBjgIkOVqUp4
728
729
  lusid/models/posting_module_response.py,sha256=HPPZHdC6hVr5F6ZHaZUW6s095XnCPDA_IamSkTaOMjQ,6104
729
730
  lusid/models/posting_module_rule.py,sha256=ts9EcdU97sCixCMSmZQuYTT1hkRm-sU_-wYK5FRVb8E,4632
730
731
  lusid/models/posting_module_rules_updated_response.py,sha256=qGQSPvvIjNJJr-F9YOXkQAEXYlsflzcaxMNzOX1tF3k,4288
732
+ lusid/models/pre_trade_configuration.py,sha256=OjyrngvMxxnF3Qf_a-YCF2Pe8URzV87s0WC3PsxcBVo,2371
731
733
  lusid/models/premium.py,sha256=R2eYbrUmKAmxdWdmWGuUqg78Hm07y1iVBW7IRu4C92I,2200
732
734
  lusid/models/previous_fund_valuation_point_data.py,sha256=4uzpfU2DKzh_Rk5VufpsDNcxM_wT1vSBY-J53OLXFAA,2676
733
735
  lusid/models/previous_nav.py,sha256=C9Iqas6Z2GeiuW7Wwm7E0dSxax0pUWpMk-rD7B1YxFY,2102
@@ -925,7 +927,7 @@ lusid/models/simple_cash_flow_loan.py,sha256=9iHHvivjXERGxq5TlRj48zHzDmpjka83V11
925
927
  lusid/models/simple_instrument.py,sha256=Cerk4RI9xGwP59xF19u0ar6JVMqHcEqC9mAysPCIlps,6849
926
928
  lusid/models/sort_order.py,sha256=tx9hNHkrcdw2gQkSLTGQ-JED7cqZoFJ60abVdqkD-GM,644
927
929
  lusid/models/spin_off_event.py,sha256=g-Xm433_Few87wFC_nG0FtCjCFQbk4rUn7fHCFugUzI,8534
928
- lusid/models/staged_modification.py,sha256=rwguOPa8tgKaObYiZ_fC8QogvxzV35PL3Jn7efFsBhg,8731
930
+ lusid/models/staged_modification.py,sha256=SMPrCbKed3JZ8Sv5qOzdCY_S41tA37PcO5jv2QZ7ij8,9179
929
931
  lusid/models/staged_modification_decision.py,sha256=IUIpOwYjk41vLP_nMWDzZgI354cCtM9L6Yrf-K_DP4s,3544
930
932
  lusid/models/staged_modification_decision_request.py,sha256=6PlH7coUQUIJe1-2GcwpatO3tpcqHIBelpgrd_BZ8qQ,2257
931
933
  lusid/models/staged_modification_effective_range.py,sha256=G9oChBwQ_358d41tVDab-j1dGqOwiaRj_wDSDJYcsIU,2256
@@ -961,8 +963,8 @@ lusid/models/trade_ticket_type.py,sha256=j7f2bfiA_cxaFtjZpT3Natl4BoaGAaEXF6E0ltE
961
963
  lusid/models/transaction.py,sha256=s_t93axEEHXHIFkmTCqeWWbJ0b2IuaP465yBvQGtK2w,11577
962
964
  lusid/models/transaction_configuration_data.py,sha256=BSHXnMn6TWaubn2zTxPvbRUOsRtGYb0N4sDNUcf1SaY,4318
963
965
  lusid/models/transaction_configuration_data_request.py,sha256=mypVKRfltmkG5NEUGqDDyBYdIir3S1nkYzGL8BwHWgo,4398
964
- lusid/models/transaction_configuration_movement_data.py,sha256=_reiT_ZkjGFvAzyuftXxFfJNJ3YIe0lLws9wFBPGmd8,7011
965
- lusid/models/transaction_configuration_movement_data_request.py,sha256=3o7WmlP4XNSjLfWWmlfcCsZSeRUFCRBdZERr-TnHYRk,6650
966
+ lusid/models/transaction_configuration_movement_data.py,sha256=ofaJZQOHloSpT4Y09Sgw-JtQq3RWNwkBl-JLMGg_yYo,7418
967
+ lusid/models/transaction_configuration_movement_data_request.py,sha256=Dw52ClN9G_Tln13YQuzW7DOP7mfpuFQ3h2E8F-HCVQ8,6713
966
968
  lusid/models/transaction_configuration_type_alias.py,sha256=YXhlJeoClTMcY0KmAfqGGV6mkYQFP2YF6B4PXOLjQt0,4750
967
969
  lusid/models/transaction_currency_and_amount.py,sha256=us7dfLcpX_55r_K3EjDeTha0k2NTDl0FkkWg9LhX6Lo,2524
968
970
  lusid/models/transaction_field_map.py,sha256=hhb6KeyDpqY-8AFeI7sFIVk0PLqOR5qrQPyriX1njJ8,4591
@@ -987,7 +989,7 @@ lusid/models/transaction_template_specification.py,sha256=dggD7J8ZSUTznJddC_Sn65
987
989
  lusid/models/transaction_type.py,sha256=zcWUQPVY5JKEOzNWQls7TjTiKOB7QVY8iFh1zgJXYUc,5765
988
990
  lusid/models/transaction_type_alias.py,sha256=xL9k8kjgAcEPe5sfK8asHscvz7gLcAa6pC_eGgVvXlY,3532
989
991
  lusid/models/transaction_type_calculation.py,sha256=Re4rt0IuLxo1hgjDz-VyIgQhVat6w7Fh-DwUF19nYYs,2846
990
- lusid/models/transaction_type_movement.py,sha256=WYGZJzPCozznev3IBG8wQQlExufRDEU1wj240-REY5w,8354
992
+ lusid/models/transaction_type_movement.py,sha256=eG4MQrMi0P_ihxOcfsqPAnkYuOmwbho9xQDoAJWH2ro,8695
991
993
  lusid/models/transaction_type_property_mapping.py,sha256=2fmP3IJH-44GXE5-jt4Fd55xQscWTrEa76yjQJIUs_4,3249
992
994
  lusid/models/transaction_type_request.py,sha256=tuoF4_cUe0KLjF4FN_un_wGtraNfJAXoNrfudvA0zIc,5121
993
995
  lusid/models/transactions_reconciliations_response.py,sha256=ogcMW8W4vgIDqEdggwJDA0tH-SInrqIFCLved7SZ-VM,3083
@@ -1107,6 +1109,6 @@ lusid/models/weighted_instruments.py,sha256=1y_y_vw4-LPsbkQx4FOzWdZc5fJnzhVkf1D3
1107
1109
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1108
1110
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1109
1111
  lusid/rest.py,sha256=TNUzQ3yLNT2L053EdR7R0vNzQh2J3TlYD1T56Dye0W0,10138
1110
- lusid_sdk-2.1.286.dist-info/METADATA,sha256=yq7giz8L3oak0T_DOTefzPda-4h4J-3mqx4aJKcqjuw,193130
1111
- lusid_sdk-2.1.286.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1112
- lusid_sdk-2.1.286.dist-info/RECORD,,
1112
+ lusid_sdk-2.1.308.dist-info/METADATA,sha256=EXKwonmIUM9d0IrFY74n29REAcKLJc-7b1Hgup3gRoA,193452
1113
+ lusid_sdk-2.1.308.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1114
+ lusid_sdk-2.1.308.dist-info/RECORD,,