lusid-sdk 2.1.492__py3-none-any.whl → 2.1.516__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 (69) hide show
  1. lusid/__init__.py +12 -0
  2. lusid/api/group_reconciliations_api.py +184 -0
  3. lusid/configuration.py +1 -1
  4. lusid/models/__init__.py +12 -0
  5. lusid/models/accumulation_event.py +3 -3
  6. lusid/models/amortisation_event.py +3 -3
  7. lusid/models/applicable_instrument_event.py +7 -2
  8. lusid/models/batch_update_user_review_for_comparison_result_request.py +81 -0
  9. lusid/models/batch_update_user_review_for_comparison_result_response.py +146 -0
  10. lusid/models/bond_coupon_event.py +3 -3
  11. lusid/models/bond_default_event.py +3 -3
  12. lusid/models/bond_principal_event.py +3 -3
  13. lusid/models/bonus_issue_event.py +3 -3
  14. lusid/models/call_on_intermediate_securities_event.py +3 -3
  15. lusid/models/capital_distribution_event.py +3 -3
  16. lusid/models/cash_dividend_event.py +3 -3
  17. lusid/models/cash_flow_event.py +3 -3
  18. lusid/models/cds_credit_event.py +3 -3
  19. lusid/models/cdx_credit_event.py +3 -3
  20. lusid/models/close_event.py +3 -3
  21. lusid/models/create_staging_rule_set_request.py +1 -6
  22. lusid/models/credit_premium_cash_flow_event.py +3 -3
  23. lusid/models/delete_instrument_response.py +7 -1
  24. lusid/models/deleted_entity_response.py +7 -1
  25. lusid/models/dividend_option_event.py +3 -3
  26. lusid/models/dividend_reinvestment_event.py +3 -3
  27. lusid/models/equity_option.py +7 -2
  28. lusid/models/exchange_traded_option_contract_details.py +1 -1
  29. lusid/models/exercise_event.py +3 -3
  30. lusid/models/expiry_event.py +3 -3
  31. lusid/models/fee.py +1 -1
  32. lusid/models/fee_request.py +1 -1
  33. lusid/models/future_expiry_event.py +3 -3
  34. lusid/models/fx_forward_settlement_event.py +3 -3
  35. lusid/models/group_reconciliation_user_review_add.py +88 -0
  36. lusid/models/group_reconciliation_user_review_remove.py +88 -0
  37. lusid/models/informational_error_event.py +3 -3
  38. lusid/models/informational_event.py +3 -3
  39. lusid/models/instrument_event.py +7 -5
  40. lusid/models/instrument_event_type.py +2 -0
  41. lusid/models/intermediate_securities_distribution_event.py +3 -3
  42. lusid/models/maturity_event.py +3 -3
  43. lusid/models/mbs_coupon_event.py +3 -3
  44. lusid/models/mbs_interest_deferral_event.py +3 -3
  45. lusid/models/mbs_interest_shortfall_event.py +3 -3
  46. lusid/models/mbs_principal_event.py +3 -3
  47. lusid/models/mbs_principal_write_off_event.py +3 -3
  48. lusid/models/merger_event.py +3 -3
  49. lusid/models/open_event.py +3 -3
  50. lusid/models/option_exercise_physical_event.py +149 -0
  51. lusid/models/protection_payout_cash_flow_event.py +102 -0
  52. lusid/models/raw_vendor_event.py +3 -3
  53. lusid/models/reset_event.py +3 -3
  54. lusid/models/reverse_stock_split_event.py +3 -3
  55. lusid/models/scrip_dividend_event.py +3 -3
  56. lusid/models/spin_off_event.py +3 -3
  57. lusid/models/stock_dividend_event.py +3 -3
  58. lusid/models/stock_split_event.py +3 -3
  59. lusid/models/swap_cash_flow_event.py +3 -3
  60. lusid/models/swap_principal_event.py +3 -3
  61. lusid/models/target_tax_lot.py +23 -2
  62. lusid/models/target_tax_lot_request.py +23 -2
  63. lusid/models/tender_event.py +3 -3
  64. lusid/models/transition_event.py +3 -3
  65. lusid/models/trigger_event.py +3 -3
  66. lusid/models/update_staging_rule_set_request.py +1 -6
  67. {lusid_sdk-2.1.492.dist-info → lusid_sdk-2.1.516.dist-info}/METADATA +8 -1
  68. {lusid_sdk-2.1.492.dist-info → lusid_sdk-2.1.516.dist-info}/RECORD +69 -63
  69. {lusid_sdk-2.1.492.dist-info → lusid_sdk-2.1.516.dist-info}/WHEEL +0 -0
lusid/__init__.py CHANGED
@@ -159,6 +159,8 @@ from lusid.models.barrier import Barrier
159
159
  from lusid.models.basket import Basket
160
160
  from lusid.models.basket_identifier import BasketIdentifier
161
161
  from lusid.models.batch_adjust_holdings_response import BatchAdjustHoldingsResponse
162
+ from lusid.models.batch_update_user_review_for_comparison_result_request import BatchUpdateUserReviewForComparisonResultRequest
163
+ from lusid.models.batch_update_user_review_for_comparison_result_response import BatchUpdateUserReviewForComparisonResultResponse
162
164
  from lusid.models.batch_upsert_dates_for_calendar_response import BatchUpsertDatesForCalendarResponse
163
165
  from lusid.models.batch_upsert_instrument_properties_response import BatchUpsertInstrumentPropertiesResponse
164
166
  from lusid.models.batch_upsert_portfolio_access_metadata_request import BatchUpsertPortfolioAccessMetadataRequest
@@ -536,9 +538,11 @@ from lusid.models.group_reconciliation_run_request import GroupReconciliationRun
536
538
  from lusid.models.group_reconciliation_run_response import GroupReconciliationRunResponse
537
539
  from lusid.models.group_reconciliation_summary import GroupReconciliationSummary
538
540
  from lusid.models.group_reconciliation_user_review import GroupReconciliationUserReview
541
+ from lusid.models.group_reconciliation_user_review_add import GroupReconciliationUserReviewAdd
539
542
  from lusid.models.group_reconciliation_user_review_break_code import GroupReconciliationUserReviewBreakCode
540
543
  from lusid.models.group_reconciliation_user_review_comment import GroupReconciliationUserReviewComment
541
544
  from lusid.models.group_reconciliation_user_review_match_key import GroupReconciliationUserReviewMatchKey
545
+ from lusid.models.group_reconciliation_user_review_remove import GroupReconciliationUserReviewRemove
542
546
  from lusid.models.grouped_result_of_address_key import GroupedResultOfAddressKey
543
547
  from lusid.models.holding_adjustment import HoldingAdjustment
544
548
  from lusid.models.holding_adjustment_with_date import HoldingAdjustmentWithDate
@@ -669,6 +673,7 @@ from lusid.models.operation_type import OperationType
669
673
  from lusid.models.operator import Operator
670
674
  from lusid.models.option_entry import OptionEntry
671
675
  from lusid.models.option_exercise_election import OptionExerciseElection
676
+ from lusid.models.option_exercise_physical_event import OptionExercisePhysicalEvent
672
677
  from lusid.models.optionality_schedule import OptionalitySchedule
673
678
  from lusid.models.order import Order
674
679
  from lusid.models.order_by_spec import OrderBySpec
@@ -843,6 +848,7 @@ from lusid.models.property_type import PropertyType
843
848
  from lusid.models.property_value import PropertyValue
844
849
  from lusid.models.property_value_equals import PropertyValueEquals
845
850
  from lusid.models.property_value_in import PropertyValueIn
851
+ from lusid.models.protection_payout_cash_flow_event import ProtectionPayoutCashFlowEvent
846
852
  from lusid.models.query_applicable_instrument_events_request import QueryApplicableInstrumentEventsRequest
847
853
  from lusid.models.query_bucketed_cash_flows_request import QueryBucketedCashFlowsRequest
848
854
  from lusid.models.query_cash_flows_request import QueryCashFlowsRequest
@@ -1368,6 +1374,8 @@ __all__ = [
1368
1374
  "Basket",
1369
1375
  "BasketIdentifier",
1370
1376
  "BatchAdjustHoldingsResponse",
1377
+ "BatchUpdateUserReviewForComparisonResultRequest",
1378
+ "BatchUpdateUserReviewForComparisonResultResponse",
1371
1379
  "BatchUpsertDatesForCalendarResponse",
1372
1380
  "BatchUpsertInstrumentPropertiesResponse",
1373
1381
  "BatchUpsertPortfolioAccessMetadataRequest",
@@ -1745,9 +1753,11 @@ __all__ = [
1745
1753
  "GroupReconciliationRunResponse",
1746
1754
  "GroupReconciliationSummary",
1747
1755
  "GroupReconciliationUserReview",
1756
+ "GroupReconciliationUserReviewAdd",
1748
1757
  "GroupReconciliationUserReviewBreakCode",
1749
1758
  "GroupReconciliationUserReviewComment",
1750
1759
  "GroupReconciliationUserReviewMatchKey",
1760
+ "GroupReconciliationUserReviewRemove",
1751
1761
  "GroupedResultOfAddressKey",
1752
1762
  "HoldingAdjustment",
1753
1763
  "HoldingAdjustmentWithDate",
@@ -1878,6 +1888,7 @@ __all__ = [
1878
1888
  "Operator",
1879
1889
  "OptionEntry",
1880
1890
  "OptionExerciseElection",
1891
+ "OptionExercisePhysicalEvent",
1881
1892
  "OptionalitySchedule",
1882
1893
  "Order",
1883
1894
  "OrderBySpec",
@@ -2052,6 +2063,7 @@ __all__ = [
2052
2063
  "PropertyValue",
2053
2064
  "PropertyValueEquals",
2054
2065
  "PropertyValueIn",
2066
+ "ProtectionPayoutCashFlowEvent",
2055
2067
  "QueryApplicableInstrumentEventsRequest",
2056
2068
  "QueryBucketedCashFlowsRequest",
2057
2069
  "QueryCashFlowsRequest",
@@ -26,6 +26,8 @@ from pydantic.v1 import Field, StrictStr, conint, conlist, constr, validator
26
26
 
27
27
  from typing import Optional
28
28
 
29
+ from lusid.models.batch_update_user_review_for_comparison_result_request import BatchUpdateUserReviewForComparisonResultRequest
30
+ from lusid.models.batch_update_user_review_for_comparison_result_response import BatchUpdateUserReviewForComparisonResultResponse
29
31
  from lusid.models.create_group_reconciliation_comparison_ruleset_request import CreateGroupReconciliationComparisonRulesetRequest
30
32
  from lusid.models.create_group_reconciliation_definition_request import CreateGroupReconciliationDefinitionRequest
31
33
  from lusid.models.deleted_entity_response import DeletedEntityResponse
@@ -61,6 +63,188 @@ class GroupReconciliationsApi:
61
63
  api_client = ApiClient.get_default()
62
64
  self.api_client = api_client
63
65
 
66
+ @overload
67
+ async def batch_update_comparison_results(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="GroupReconciliationDefinitionId code.")], batch_update_user_review_for_comparison_result_request : Annotated[conlist(BatchUpdateUserReviewForComparisonResultRequest), Field(..., description="A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp.")], success_mode : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".")] = None, **kwargs) -> BatchUpdateUserReviewForComparisonResultResponse: # noqa: E501
68
+ ...
69
+
70
+ @overload
71
+ def batch_update_comparison_results(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="GroupReconciliationDefinitionId code.")], batch_update_user_review_for_comparison_result_request : Annotated[conlist(BatchUpdateUserReviewForComparisonResultRequest), Field(..., description="A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp.")], success_mode : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".")] = None, async_req: Optional[bool]=True, **kwargs) -> BatchUpdateUserReviewForComparisonResultResponse: # noqa: E501
72
+ ...
73
+
74
+ @validate_arguments
75
+ def batch_update_comparison_results(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="GroupReconciliationDefinitionId code.")], batch_update_user_review_for_comparison_result_request : Annotated[conlist(BatchUpdateUserReviewForComparisonResultRequest), Field(..., description="A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp.")], success_mode : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[BatchUpdateUserReviewForComparisonResultResponse, Awaitable[BatchUpdateUserReviewForComparisonResultResponse]]: # noqa: E501
76
+ """[EXPERIMENTAL] BatchUpdateComparisonResults: Add User Review entries for a range of comparison results related to a specific GroupReconciliationDefinition. # noqa: E501
77
+
78
+ Allows to update multiple Group Reconciliation Comparison Results related to the same definition specified by the Finbourne.Identifiers.Abstractions.Scope and Finbourne.Identifiers.Abstractions.Code. Updates User Review with new entries and sets the relevant Review Status. Supports partial success when all the entries that haven't passed validation or are not related to the definition will be returned with respectful error details. # noqa: E501
79
+ This method makes a synchronous HTTP request by default. To make an
80
+ asynchronous HTTP request, please pass async_req=True
81
+
82
+ >>> thread = api.batch_update_comparison_results(scope, code, batch_update_user_review_for_comparison_result_request, success_mode, async_req=True)
83
+ >>> result = thread.get()
84
+
85
+ :param scope: Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults. (required)
86
+ :type scope: str
87
+ :param code: GroupReconciliationDefinitionId code. (required)
88
+ :type code: str
89
+ :param batch_update_user_review_for_comparison_result_request: A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp. (required)
90
+ :type batch_update_user_review_for_comparison_result_request: List[BatchUpdateUserReviewForComparisonResultRequest]
91
+ :param success_mode: Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".
92
+ :type success_mode: str
93
+ :param async_req: Whether to execute the request asynchronously.
94
+ :type async_req: bool, optional
95
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
96
+ :param opts: Configuration options for this request
97
+ :type opts: ConfigurationOptions, optional
98
+ :return: Returns the result object.
99
+ If the method is called asynchronously,
100
+ returns the request thread.
101
+ :rtype: BatchUpdateUserReviewForComparisonResultResponse
102
+ """
103
+ kwargs['_return_http_data_only'] = True
104
+ if '_preload_content' in kwargs:
105
+ message = "Error! Please call the batch_update_comparison_results_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
106
+ raise ValueError(message)
107
+ if async_req is not None:
108
+ kwargs['async_req'] = async_req
109
+ return self.batch_update_comparison_results_with_http_info(scope, code, batch_update_user_review_for_comparison_result_request, success_mode, **kwargs) # noqa: E501
110
+
111
+ @validate_arguments
112
+ def batch_update_comparison_results_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="GroupReconciliationDefinitionId code.")], batch_update_user_review_for_comparison_result_request : Annotated[conlist(BatchUpdateUserReviewForComparisonResultRequest), Field(..., description="A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp.")], success_mode : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
113
+ """[EXPERIMENTAL] BatchUpdateComparisonResults: Add User Review entries for a range of comparison results related to a specific GroupReconciliationDefinition. # noqa: E501
114
+
115
+ Allows to update multiple Group Reconciliation Comparison Results related to the same definition specified by the Finbourne.Identifiers.Abstractions.Scope and Finbourne.Identifiers.Abstractions.Code. Updates User Review with new entries and sets the relevant Review Status. Supports partial success when all the entries that haven't passed validation or are not related to the definition will be returned with respectful error details. # noqa: E501
116
+ This method makes a synchronous HTTP request by default. To make an
117
+ asynchronous HTTP request, please pass async_req=True
118
+
119
+ >>> thread = api.batch_update_comparison_results_with_http_info(scope, code, batch_update_user_review_for_comparison_result_request, success_mode, async_req=True)
120
+ >>> result = thread.get()
121
+
122
+ :param scope: Shared Scope of the GroupReconciliationDefinition and GroupReconciliationComparisonResults. (required)
123
+ :type scope: str
124
+ :param code: GroupReconciliationDefinitionId code. (required)
125
+ :type code: str
126
+ :param batch_update_user_review_for_comparison_result_request: A collection of the comparison result Ids and their user review entries to be added or removed. Single request contains resultId, break code/match key/comment to add and break code/match key/comment to remove by added timestamp. (required)
127
+ :type batch_update_user_review_for_comparison_result_request: List[BatchUpdateUserReviewForComparisonResultRequest]
128
+ :param success_mode: Defines whether the request should fail if at least one of the entries is failed to update or process all the entries regardless and return collections of successful and failed updates. \"Partial\" (default) | \"Atomic\".
129
+ :type success_mode: str
130
+ :param async_req: Whether to execute the request asynchronously.
131
+ :type async_req: bool, optional
132
+ :param _preload_content: if False, the ApiResponse.data will
133
+ be set to none and raw_data will store the
134
+ HTTP response body without reading/decoding.
135
+ Default is True.
136
+ :type _preload_content: bool, optional
137
+ :param _return_http_data_only: response data instead of ApiResponse
138
+ object with status code, headers, etc
139
+ :type _return_http_data_only: bool, optional
140
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
141
+ :param opts: Configuration options for this request
142
+ :type opts: ConfigurationOptions, optional
143
+ :param _request_auth: set to override the auth_settings for an a single
144
+ request; this effectively ignores the authentication
145
+ in the spec for a single request.
146
+ :type _request_auth: dict, optional
147
+ :type _content_type: string, optional: force content-type for the request
148
+ :return: Returns the result object.
149
+ If the method is called asynchronously,
150
+ returns the request thread.
151
+ :rtype: tuple(BatchUpdateUserReviewForComparisonResultResponse, status_code(int), headers(HTTPHeaderDict))
152
+ """
153
+
154
+ _params = locals()
155
+
156
+ _all_params = [
157
+ 'scope',
158
+ 'code',
159
+ 'batch_update_user_review_for_comparison_result_request',
160
+ 'success_mode'
161
+ ]
162
+ _all_params.extend(
163
+ [
164
+ 'async_req',
165
+ '_return_http_data_only',
166
+ '_preload_content',
167
+ '_request_timeout',
168
+ '_request_auth',
169
+ '_content_type',
170
+ '_headers',
171
+ 'opts'
172
+ ]
173
+ )
174
+
175
+ # validate the arguments
176
+ for _key, _val in _params['kwargs'].items():
177
+ if _key not in _all_params:
178
+ raise ApiTypeError(
179
+ "Got an unexpected keyword argument '%s'"
180
+ " to method batch_update_comparison_results" % _key
181
+ )
182
+ _params[_key] = _val
183
+ del _params['kwargs']
184
+
185
+ _collection_formats = {}
186
+
187
+ # process the path parameters
188
+ _path_params = {}
189
+ if _params['scope']:
190
+ _path_params['scope'] = _params['scope']
191
+
192
+ if _params['code']:
193
+ _path_params['code'] = _params['code']
194
+
195
+
196
+ # process the query parameters
197
+ _query_params = []
198
+ if _params.get('success_mode') is not None: # noqa: E501
199
+ _query_params.append(('successMode', _params['success_mode']))
200
+
201
+ # process the header parameters
202
+ _header_params = dict(_params.get('_headers', {}))
203
+ # process the form parameters
204
+ _form_params = []
205
+ _files = {}
206
+ # process the body parameter
207
+ _body_params = None
208
+ if _params['batch_update_user_review_for_comparison_result_request'] is not None:
209
+ _body_params = _params['batch_update_user_review_for_comparison_result_request']
210
+
211
+ # set the HTTP header `Accept`
212
+ _header_params['Accept'] = self.api_client.select_header_accept(
213
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
214
+
215
+ # set the HTTP header `Content-Type`
216
+ _content_types_list = _params.get('_content_type',
217
+ self.api_client.select_header_content_type(
218
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
219
+ if _content_types_list:
220
+ _header_params['Content-Type'] = _content_types_list
221
+
222
+ # authentication setting
223
+ _auth_settings = ['oauth2'] # noqa: E501
224
+
225
+ _response_types_map = {
226
+ '200': "BatchUpdateUserReviewForComparisonResultResponse",
227
+ '400': "LusidValidationProblemDetails",
228
+ }
229
+
230
+ return self.api_client.call_api(
231
+ '/api/reconciliations/groupreconciliationdefinitions/{scope}/{code}/comparisonresults/$batchReview', 'POST',
232
+ _path_params,
233
+ _query_params,
234
+ _header_params,
235
+ body=_body_params,
236
+ post_params=_form_params,
237
+ files=_files,
238
+ response_types_map=_response_types_map,
239
+ auth_settings=_auth_settings,
240
+ async_req=_params.get('async_req'),
241
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
242
+ _preload_content=_params.get('_preload_content', True),
243
+ _request_timeout=_params.get('_request_timeout'),
244
+ opts=_params.get('opts'),
245
+ collection_formats=_collection_formats,
246
+ _request_auth=_params.get('_request_auth'))
247
+
64
248
  @overload
65
249
  async def create_comparison_ruleset(self, create_group_reconciliation_comparison_ruleset_request : Annotated[Optional[CreateGroupReconciliationComparisonRulesetRequest], Field(description="The request containing the details of the ruleset")] = None, **kwargs) -> GroupReconciliationComparisonRuleset: # noqa: E501
66
250
  ...
lusid/configuration.py CHANGED
@@ -445,7 +445,7 @@ class Configuration:
445
445
  return "Python SDK Debug Report:\n"\
446
446
  "OS: {env}\n"\
447
447
  "Python Version: {pyversion}\n"\
448
- "Version of the API: 0.11.6921\n"\
448
+ "Version of the API: 0.11.6945\n"\
449
449
  "SDK Package Version: {package_version}".\
450
450
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
451
451
 
lusid/models/__init__.py CHANGED
@@ -78,6 +78,8 @@ from lusid.models.barrier import Barrier
78
78
  from lusid.models.basket import Basket
79
79
  from lusid.models.basket_identifier import BasketIdentifier
80
80
  from lusid.models.batch_adjust_holdings_response import BatchAdjustHoldingsResponse
81
+ from lusid.models.batch_update_user_review_for_comparison_result_request import BatchUpdateUserReviewForComparisonResultRequest
82
+ from lusid.models.batch_update_user_review_for_comparison_result_response import BatchUpdateUserReviewForComparisonResultResponse
81
83
  from lusid.models.batch_upsert_dates_for_calendar_response import BatchUpsertDatesForCalendarResponse
82
84
  from lusid.models.batch_upsert_instrument_properties_response import BatchUpsertInstrumentPropertiesResponse
83
85
  from lusid.models.batch_upsert_portfolio_access_metadata_request import BatchUpsertPortfolioAccessMetadataRequest
@@ -455,9 +457,11 @@ from lusid.models.group_reconciliation_run_request import GroupReconciliationRun
455
457
  from lusid.models.group_reconciliation_run_response import GroupReconciliationRunResponse
456
458
  from lusid.models.group_reconciliation_summary import GroupReconciliationSummary
457
459
  from lusid.models.group_reconciliation_user_review import GroupReconciliationUserReview
460
+ from lusid.models.group_reconciliation_user_review_add import GroupReconciliationUserReviewAdd
458
461
  from lusid.models.group_reconciliation_user_review_break_code import GroupReconciliationUserReviewBreakCode
459
462
  from lusid.models.group_reconciliation_user_review_comment import GroupReconciliationUserReviewComment
460
463
  from lusid.models.group_reconciliation_user_review_match_key import GroupReconciliationUserReviewMatchKey
464
+ from lusid.models.group_reconciliation_user_review_remove import GroupReconciliationUserReviewRemove
461
465
  from lusid.models.grouped_result_of_address_key import GroupedResultOfAddressKey
462
466
  from lusid.models.holding_adjustment import HoldingAdjustment
463
467
  from lusid.models.holding_adjustment_with_date import HoldingAdjustmentWithDate
@@ -588,6 +592,7 @@ from lusid.models.operation_type import OperationType
588
592
  from lusid.models.operator import Operator
589
593
  from lusid.models.option_entry import OptionEntry
590
594
  from lusid.models.option_exercise_election import OptionExerciseElection
595
+ from lusid.models.option_exercise_physical_event import OptionExercisePhysicalEvent
591
596
  from lusid.models.optionality_schedule import OptionalitySchedule
592
597
  from lusid.models.order import Order
593
598
  from lusid.models.order_by_spec import OrderBySpec
@@ -762,6 +767,7 @@ from lusid.models.property_type import PropertyType
762
767
  from lusid.models.property_value import PropertyValue
763
768
  from lusid.models.property_value_equals import PropertyValueEquals
764
769
  from lusid.models.property_value_in import PropertyValueIn
770
+ from lusid.models.protection_payout_cash_flow_event import ProtectionPayoutCashFlowEvent
765
771
  from lusid.models.query_applicable_instrument_events_request import QueryApplicableInstrumentEventsRequest
766
772
  from lusid.models.query_bucketed_cash_flows_request import QueryBucketedCashFlowsRequest
767
773
  from lusid.models.query_cash_flows_request import QueryCashFlowsRequest
@@ -1207,6 +1213,8 @@ __all__ = [
1207
1213
  "Basket",
1208
1214
  "BasketIdentifier",
1209
1215
  "BatchAdjustHoldingsResponse",
1216
+ "BatchUpdateUserReviewForComparisonResultRequest",
1217
+ "BatchUpdateUserReviewForComparisonResultResponse",
1210
1218
  "BatchUpsertDatesForCalendarResponse",
1211
1219
  "BatchUpsertInstrumentPropertiesResponse",
1212
1220
  "BatchUpsertPortfolioAccessMetadataRequest",
@@ -1584,9 +1592,11 @@ __all__ = [
1584
1592
  "GroupReconciliationRunResponse",
1585
1593
  "GroupReconciliationSummary",
1586
1594
  "GroupReconciliationUserReview",
1595
+ "GroupReconciliationUserReviewAdd",
1587
1596
  "GroupReconciliationUserReviewBreakCode",
1588
1597
  "GroupReconciliationUserReviewComment",
1589
1598
  "GroupReconciliationUserReviewMatchKey",
1599
+ "GroupReconciliationUserReviewRemove",
1590
1600
  "GroupedResultOfAddressKey",
1591
1601
  "HoldingAdjustment",
1592
1602
  "HoldingAdjustmentWithDate",
@@ -1717,6 +1727,7 @@ __all__ = [
1717
1727
  "Operator",
1718
1728
  "OptionEntry",
1719
1729
  "OptionExerciseElection",
1730
+ "OptionExercisePhysicalEvent",
1720
1731
  "OptionalitySchedule",
1721
1732
  "Order",
1722
1733
  "OrderBySpec",
@@ -1891,6 +1902,7 @@ __all__ = [
1891
1902
  "PropertyValue",
1892
1903
  "PropertyValueEquals",
1893
1904
  "PropertyValueIn",
1905
+ "ProtectionPayoutCashFlowEvent",
1894
1906
  "QueryApplicableInstrumentEventsRequest",
1895
1907
  "QueryBucketedCashFlowsRequest",
1896
1908
  "QueryCashFlowsRequest",
@@ -31,15 +31,15 @@ class AccumulationEvent(InstrumentEvent):
31
31
  dividend_rate: Union[StrictFloat, StrictInt] = Field(..., alias="dividendRate", description="Dividend rate or payment rate as a percentage. i.e. 5% is written as 0.05")
32
32
  ex_date: datetime = Field(..., alias="exDate", description="The first business day on which the dividend is not owed to the buying party. Typically this is T-1 from the RecordDate.")
33
33
  payment_date: datetime = Field(..., alias="paymentDate", description="The date the company pays out dividends to shareholders.")
34
- instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent")
34
+ instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent, OptionExercisePhysicalEvent, ProtectionPayoutCashFlowEvent")
35
35
  additional_properties: Dict[str, Any] = {}
36
36
  __properties = ["instrumentEventType", "announcementDate", "dividendCurrency", "dividendRate", "exDate", "paymentDate"]
37
37
 
38
38
  @validator('instrument_event_type')
39
39
  def instrument_event_type_validate_enum(cls, value):
40
40
  """Validates the enum"""
41
- if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent'):
42
- raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent')")
41
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent', 'OptionExercisePhysicalEvent', 'ProtectionPayoutCashFlowEvent'):
42
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent', 'OptionExercisePhysicalEvent', 'ProtectionPayoutCashFlowEvent')")
43
43
  return value
44
44
 
45
45
  class Config:
@@ -30,15 +30,15 @@ class AmortisationEvent(InstrumentEvent):
30
30
  dom_ccy: StrictStr = Field(..., alias="domCcy", description="Domestic currency of the originating instrument")
31
31
  pay_receive: constr(strict=True, min_length=1) = Field(..., alias="payReceive", description="Is this event in relation to the Pay or Receive leg")
32
32
  payment_date: datetime = Field(..., alias="paymentDate", description="The date the principal payment is to be made.")
33
- instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent")
33
+ instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent, OptionExercisePhysicalEvent, ProtectionPayoutCashFlowEvent")
34
34
  additional_properties: Dict[str, Any] = {}
35
35
  __properties = ["instrumentEventType", "amountReduced", "domCcy", "payReceive", "paymentDate"]
36
36
 
37
37
  @validator('instrument_event_type')
38
38
  def instrument_event_type_validate_enum(cls, value):
39
39
  """Validates the enum"""
40
- if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent'):
41
- raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent')")
40
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent', 'OptionExercisePhysicalEvent', 'ProtectionPayoutCashFlowEvent'):
41
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent', 'MbsInterestShortfallEvent', 'TenderEvent', 'CallOnIntermediateSecuritiesEvent', 'IntermediateSecuritiesDistributionEvent', 'OptionExercisePhysicalEvent', 'ProtectionPayoutCashFlowEvent')")
42
42
  return value
43
43
 
44
44
  class Config:
@@ -19,7 +19,7 @@ import json
19
19
 
20
20
 
21
21
  from typing import Any, Dict, List, Optional
22
- from pydantic.v1 import BaseModel, Field, StrictInt, conlist, constr
22
+ from pydantic.v1 import BaseModel, Field, StrictInt, StrictStr, conlist, constr
23
23
  from lusid.models.generated_event_diagnostics import GeneratedEventDiagnostics
24
24
  from lusid.models.instrument_event_holder import InstrumentEventHolder
25
25
  from lusid.models.resource_id import ResourceId
@@ -40,7 +40,7 @@ class ApplicableInstrumentEvent(BaseModel):
40
40
  generated_event: Optional[InstrumentEventHolder] = Field(None, alias="generatedEvent")
41
41
  generated_event_diagnostics: Optional[GeneratedEventDiagnostics] = Field(None, alias="generatedEventDiagnostics")
42
42
  loaded_event: Optional[InstrumentEventHolder] = Field(None, alias="loadedEvent")
43
- applied_instrument_event_instruction_id: constr(strict=True, min_length=1) = Field(..., alias="appliedInstrumentEventInstructionId")
43
+ applied_instrument_event_instruction_id: Optional[StrictStr] = Field(None, alias="appliedInstrumentEventInstructionId")
44
44
  transactions: Optional[conlist(Transaction)] = None
45
45
  transaction_diagnostics: Optional[TransactionDiagnostics] = Field(None, alias="transactionDiagnostics")
46
46
  __properties = ["portfolioId", "holdingId", "lusidInstrumentId", "instrumentScope", "instrumentType", "instrumentEventType", "instrumentEventId", "generatedEvent", "generatedEventDiagnostics", "loadedEvent", "appliedInstrumentEventInstructionId", "transactions", "transactionDiagnostics"]
@@ -91,6 +91,11 @@ class ApplicableInstrumentEvent(BaseModel):
91
91
  # override the default output from pydantic by calling `to_dict()` of transaction_diagnostics
92
92
  if self.transaction_diagnostics:
93
93
  _dict['transactionDiagnostics'] = self.transaction_diagnostics.to_dict()
94
+ # set to None if applied_instrument_event_instruction_id (nullable) is None
95
+ # and __fields_set__ contains the field
96
+ if self.applied_instrument_event_instruction_id is None and "applied_instrument_event_instruction_id" in self.__fields_set__:
97
+ _dict['appliedInstrumentEventInstructionId'] = None
98
+
94
99
  # set to None if transactions (nullable) is None
95
100
  # and __fields_set__ contains the field
96
101
  if self.transactions is None and "transactions" in self.__fields_set__:
@@ -0,0 +1,81 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+ from lusid.models.group_reconciliation_user_review_add import GroupReconciliationUserReviewAdd
24
+ from lusid.models.group_reconciliation_user_review_remove import GroupReconciliationUserReviewRemove
25
+
26
+ class BatchUpdateUserReviewForComparisonResultRequest(BaseModel):
27
+ """
28
+ BatchUpdateUserReviewForComparisonResultRequest
29
+ """
30
+ comparison_result_id: constr(strict=True, min_length=1) = Field(..., alias="comparisonResultId", description="Comparison result identifier, encoded value for core attribute results, aggregate attribute results, reconciliation type and run instanceId.")
31
+ user_review_add: Optional[GroupReconciliationUserReviewAdd] = Field(None, alias="userReviewAdd")
32
+ user_review_remove: Optional[GroupReconciliationUserReviewRemove] = Field(None, alias="userReviewRemove")
33
+ __properties = ["comparisonResultId", "userReviewAdd", "userReviewRemove"]
34
+
35
+ class Config:
36
+ """Pydantic configuration"""
37
+ allow_population_by_field_name = True
38
+ validate_assignment = True
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.dict(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ return json.dumps(self.to_dict())
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> BatchUpdateUserReviewForComparisonResultRequest:
50
+ """Create an instance of BatchUpdateUserReviewForComparisonResultRequest from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self):
54
+ """Returns the dictionary representation of the model using alias"""
55
+ _dict = self.dict(by_alias=True,
56
+ exclude={
57
+ },
58
+ exclude_none=True)
59
+ # override the default output from pydantic by calling `to_dict()` of user_review_add
60
+ if self.user_review_add:
61
+ _dict['userReviewAdd'] = self.user_review_add.to_dict()
62
+ # override the default output from pydantic by calling `to_dict()` of user_review_remove
63
+ if self.user_review_remove:
64
+ _dict['userReviewRemove'] = self.user_review_remove.to_dict()
65
+ return _dict
66
+
67
+ @classmethod
68
+ def from_dict(cls, obj: dict) -> BatchUpdateUserReviewForComparisonResultRequest:
69
+ """Create an instance of BatchUpdateUserReviewForComparisonResultRequest from a dict"""
70
+ if obj is None:
71
+ return None
72
+
73
+ if not isinstance(obj, dict):
74
+ return BatchUpdateUserReviewForComparisonResultRequest.parse_obj(obj)
75
+
76
+ _obj = BatchUpdateUserReviewForComparisonResultRequest.parse_obj({
77
+ "comparison_result_id": obj.get("comparisonResultId"),
78
+ "user_review_add": GroupReconciliationUserReviewAdd.from_dict(obj.get("userReviewAdd")) if obj.get("userReviewAdd") is not None else None,
79
+ "user_review_remove": GroupReconciliationUserReviewRemove.from_dict(obj.get("userReviewRemove")) if obj.get("userReviewRemove") is not None else None
80
+ })
81
+ return _obj