lusid-sdk 2.1.804__py3-none-any.whl → 2.1.806__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
@@ -207,6 +207,7 @@ from lusid.models.bool_list_compliance_parameter import BoolListComplianceParame
207
207
  from lusid.models.branch_step import BranchStep
208
208
  from lusid.models.branch_step_request import BranchStepRequest
209
209
  from lusid.models.break_code_source import BreakCodeSource
210
+ from lusid.models.bucket import Bucket
210
211
  from lusid.models.bucketed_cash_flow_request import BucketedCashFlowRequest
211
212
  from lusid.models.bucketed_cash_flow_response import BucketedCashFlowResponse
212
213
  from lusid.models.bucketing_schedule import BucketingSchedule
@@ -437,6 +438,7 @@ from lusid.models.economic_dependency import EconomicDependency
437
438
  from lusid.models.economic_dependency_type import EconomicDependencyType
438
439
  from lusid.models.economic_dependency_with_complex_market_data import EconomicDependencyWithComplexMarketData
439
440
  from lusid.models.economic_dependency_with_quote import EconomicDependencyWithQuote
441
+ from lusid.models.economics import Economics
440
442
  from lusid.models.effective_range import EffectiveRange
441
443
  from lusid.models.election_specification import ElectionSpecification
442
444
  from lusid.models.eligibility_calculation import EligibilityCalculation
@@ -1007,6 +1009,7 @@ from lusid.models.resource_list_of_i_unit_definition_dto import ResourceListOfIU
1007
1009
  from lusid.models.resource_list_of_instrument_cash_flow import ResourceListOfInstrumentCashFlow
1008
1010
  from lusid.models.resource_list_of_instrument_event_holder import ResourceListOfInstrumentEventHolder
1009
1011
  from lusid.models.resource_list_of_instrument_id_type_descriptor import ResourceListOfInstrumentIdTypeDescriptor
1012
+ from lusid.models.resource_list_of_investor_record import ResourceListOfInvestorRecord
1010
1013
  from lusid.models.resource_list_of_legal_entity import ResourceListOfLegalEntity
1011
1014
  from lusid.models.resource_list_of_list_complex_market_data_with_meta_data_response import ResourceListOfListComplexMarketDataWithMetaDataResponse
1012
1015
  from lusid.models.resource_list_of_mapping import ResourceListOfMapping
@@ -1515,6 +1518,7 @@ __all__ = [
1515
1518
  "BranchStep",
1516
1519
  "BranchStepRequest",
1517
1520
  "BreakCodeSource",
1521
+ "Bucket",
1518
1522
  "BucketedCashFlowRequest",
1519
1523
  "BucketedCashFlowResponse",
1520
1524
  "BucketingSchedule",
@@ -1745,6 +1749,7 @@ __all__ = [
1745
1749
  "EconomicDependencyType",
1746
1750
  "EconomicDependencyWithComplexMarketData",
1747
1751
  "EconomicDependencyWithQuote",
1752
+ "Economics",
1748
1753
  "EffectiveRange",
1749
1754
  "ElectionSpecification",
1750
1755
  "EligibilityCalculation",
@@ -2315,6 +2320,7 @@ __all__ = [
2315
2320
  "ResourceListOfInstrumentCashFlow",
2316
2321
  "ResourceListOfInstrumentEventHolder",
2317
2322
  "ResourceListOfInstrumentIdTypeDescriptor",
2323
+ "ResourceListOfInvestorRecord",
2318
2324
  "ResourceListOfLegalEntity",
2319
2325
  "ResourceListOfListComplexMarketDataWithMetaDataResponse",
2320
2326
  "ResourceListOfMapping",
@@ -22,12 +22,13 @@ from typing import overload, Optional, Union, Awaitable
22
22
  from typing_extensions import Annotated
23
23
  from datetime import datetime
24
24
 
25
- from pydantic.v1 import Field, StrictStr, conlist, constr, validator
25
+ from pydantic.v1 import Field, StrictStr, conint, conlist, constr, validator
26
26
 
27
27
  from typing import Dict, Optional
28
28
 
29
29
  from lusid.models.deleted_entity_response import DeletedEntityResponse
30
30
  from lusid.models.investor_record import InvestorRecord
31
+ from lusid.models.resource_list_of_investor_record import ResourceListOfInvestorRecord
31
32
  from lusid.models.upsert_investor_record_request import UpsertInvestorRecordRequest
32
33
  from lusid.models.upsert_investor_records_response import UpsertInvestorRecordsResponse
33
34
 
@@ -67,7 +68,7 @@ class InvestorRecordsApi:
67
68
 
68
69
  @validate_arguments
69
70
  def delete_investor_record(self, id_type_scope : Annotated[StrictStr, Field(..., description="The scope of the investor record identifier type.")], id_type_code : Annotated[StrictStr, Field(..., description="The code of the investor record identifier type.")], code : Annotated[StrictStr, Field(..., description="Code of the investor record under specified identifier type's scope and code. This together with defined identifier type uniquely identifies the investor record to delete.")], async_req: Optional[bool]=None, **kwargs) -> Union[DeletedEntityResponse, Awaitable[DeletedEntityResponse]]: # noqa: E501
70
- """DeleteInvestorRecord: Delete Investor Record # noqa: E501
71
+ """[EARLY ACCESS] DeleteInvestorRecord: Delete Investor Record # noqa: E501
71
72
 
72
73
  Delete an investor record. Deletion will be valid from the investor record's creation datetime. This means that the investor record will no longer exist at any effective datetime from the asAt datetime of deletion. # noqa: E501
73
74
  This method makes a synchronous HTTP request by default. To make an
@@ -102,7 +103,7 @@ class InvestorRecordsApi:
102
103
 
103
104
  @validate_arguments
104
105
  def delete_investor_record_with_http_info(self, id_type_scope : Annotated[StrictStr, Field(..., description="The scope of the investor record identifier type.")], id_type_code : Annotated[StrictStr, Field(..., description="The code of the investor record identifier type.")], code : Annotated[StrictStr, Field(..., description="Code of the investor record under specified identifier type's scope and code. This together with defined identifier type uniquely identifies the investor record to delete.")], **kwargs) -> ApiResponse: # noqa: E501
105
- """DeleteInvestorRecord: Delete Investor Record # noqa: E501
106
+ """[EARLY ACCESS] DeleteInvestorRecord: Delete Investor Record # noqa: E501
106
107
 
107
108
  Delete an investor record. Deletion will be valid from the investor record's creation datetime. This means that the investor record will no longer exist at any effective datetime from the asAt datetime of deletion. # noqa: E501
108
109
  This method makes a synchronous HTTP request by default. To make an
@@ -430,6 +431,220 @@ class InvestorRecordsApi:
430
431
  _request_auth=_params.get('_request_auth'))
431
432
 
432
433
 
434
+ @overload
435
+ async def list_all_investor_records(self, effective_at : Annotated[Optional[StrictStr], Field( description="The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.")] = None, page : Annotated[Optional[StrictStr], Field( description="The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True)], Field(description="When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.")] = None, filter : Annotated[Optional[StrictStr], Field( description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".")] = None, relationship_definition_ids : Annotated[Optional[conlist(StrictStr)], Field(description="A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.")] = None, **kwargs) -> ResourceListOfInvestorRecord: # noqa: E501
436
+ ...
437
+
438
+ @overload
439
+ def list_all_investor_records(self, effective_at : Annotated[Optional[StrictStr], Field( description="The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.")] = None, page : Annotated[Optional[StrictStr], Field( description="The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True)], Field(description="When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.")] = None, filter : Annotated[Optional[StrictStr], Field( description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".")] = None, relationship_definition_ids : Annotated[Optional[conlist(StrictStr)], Field(description="A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfInvestorRecord: # noqa: E501
440
+ ...
441
+
442
+ @validate_arguments
443
+ def list_all_investor_records(self, effective_at : Annotated[Optional[StrictStr], Field( description="The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.")] = None, page : Annotated[Optional[StrictStr], Field( description="The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True)], Field(description="When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.")] = None, filter : Annotated[Optional[StrictStr], Field( description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".")] = None, relationship_definition_ids : Annotated[Optional[conlist(StrictStr)], Field(description="A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfInvestorRecord, Awaitable[ResourceListOfInvestorRecord]]: # noqa: E501
444
+ """[EARLY ACCESS] ListAllInvestorRecords: List Investor Records # noqa: E501
445
+
446
+ List all investor records which the user is entitled to see. # noqa: E501
447
+ This method makes a synchronous HTTP request by default. To make an
448
+ asynchronous HTTP request, please pass async_req=True
449
+
450
+ >>> thread = api.list_all_investor_records(effective_at, as_at, page, limit, filter, sort_by, property_keys, relationship_definition_ids, async_req=True)
451
+ >>> result = thread.get()
452
+
453
+ :param effective_at: The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.
454
+ :type effective_at: str
455
+ :param as_at: The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.
456
+ :type as_at: datetime
457
+ :param page: The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.
458
+ :type page: str
459
+ :param limit: When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.
460
+ :type limit: int
461
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.
462
+ :type filter: str
463
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".
464
+ :type sort_by: List[str]
465
+ :param property_keys: A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".
466
+ :type property_keys: List[str]
467
+ :param relationship_definition_ids: A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
468
+ :type relationship_definition_ids: List[str]
469
+ :param async_req: Whether to execute the request asynchronously.
470
+ :type async_req: bool, optional
471
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
472
+ :param opts: Configuration options for this request
473
+ :type opts: ConfigurationOptions, optional
474
+ :return: Returns the result object.
475
+ If the method is called asynchronously,
476
+ returns the request thread.
477
+ :rtype: ResourceListOfInvestorRecord
478
+ """
479
+ kwargs['_return_http_data_only'] = True
480
+ if '_preload_content' in kwargs:
481
+ message = "Error! Please call the list_all_investor_records_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
482
+ raise ValueError(message)
483
+ if async_req is not None:
484
+ kwargs['async_req'] = async_req
485
+ return self.list_all_investor_records_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, relationship_definition_ids, **kwargs) # noqa: E501
486
+
487
+ @validate_arguments
488
+ def list_all_investor_records_with_http_info(self, effective_at : Annotated[Optional[StrictStr], Field( description="The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.")] = None, page : Annotated[Optional[StrictStr], Field( description="The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True)], Field(description="When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.")] = None, filter : Annotated[Optional[StrictStr], Field( description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".")] = None, relationship_definition_ids : Annotated[Optional[conlist(StrictStr)], Field(description="A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.")] = None, **kwargs) -> ApiResponse: # noqa: E501
489
+ """[EARLY ACCESS] ListAllInvestorRecords: List Investor Records # noqa: E501
490
+
491
+ List all investor records which the user is entitled to see. # noqa: E501
492
+ This method makes a synchronous HTTP request by default. To make an
493
+ asynchronous HTTP request, please pass async_req=True
494
+
495
+ >>> thread = api.list_all_investor_records_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, relationship_definition_ids, async_req=True)
496
+ >>> result = thread.get()
497
+
498
+ :param effective_at: The effective datetime or cut label at which to list the investor records. Defaults to the current LUSID system datetime if not specified.
499
+ :type effective_at: str
500
+ :param as_at: The asAt datetime at which to list the investor records. Defaults to return the latest version of each investor records if not specified.
501
+ :type as_at: datetime
502
+ :param page: The pagination token to use to continue listing investor records from a previous call to list investor records. This value is returned from the previous call. If a pagination token is provided the filter, effectiveAt, sortBy and asAt fields must not have changed since the original request.
503
+ :type page: str
504
+ :param limit: When paginating, limit the number of returned results to this many. Defaults to 5000 if not specified.
505
+ :type limit: int
506
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.
507
+ :type filter: str
508
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".
509
+ :type sort_by: List[str]
510
+ :param property_keys: A list of property keys or identifier types (as property keys) from the \"InvestorRecord\" domain to include for each investor record, or from any domain that supports relationships to decorate onto related entities. These take the format {domain}/{scope}/{code} e.g. \"InvestorRecord/ContactDetails/Address\".
511
+ :type property_keys: List[str]
512
+ :param relationship_definition_ids: A list of relationship definitions that are used to decorate related entities onto each portfolio in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
513
+ :type relationship_definition_ids: List[str]
514
+ :param async_req: Whether to execute the request asynchronously.
515
+ :type async_req: bool, optional
516
+ :param _preload_content: if False, the ApiResponse.data will
517
+ be set to none and raw_data will store the
518
+ HTTP response body without reading/decoding.
519
+ Default is True.
520
+ :type _preload_content: bool, optional
521
+ :param _return_http_data_only: response data instead of ApiResponse
522
+ object with status code, headers, etc
523
+ :type _return_http_data_only: bool, optional
524
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
525
+ :param opts: Configuration options for this request
526
+ :type opts: ConfigurationOptions, optional
527
+ :param _request_auth: set to override the auth_settings for an a single
528
+ request; this effectively ignores the authentication
529
+ in the spec for a single request.
530
+ :type _request_auth: dict, optional
531
+ :type _content_type: string, optional: force content-type for the request
532
+ :return: Returns the result object.
533
+ If the method is called asynchronously,
534
+ returns the request thread.
535
+ :rtype: tuple(ResourceListOfInvestorRecord, status_code(int), headers(HTTPHeaderDict))
536
+ """
537
+
538
+ _params = locals()
539
+
540
+ _all_params = [
541
+ 'effective_at',
542
+ 'as_at',
543
+ 'page',
544
+ 'limit',
545
+ 'filter',
546
+ 'sort_by',
547
+ 'property_keys',
548
+ 'relationship_definition_ids'
549
+ ]
550
+ _all_params.extend(
551
+ [
552
+ 'async_req',
553
+ '_return_http_data_only',
554
+ '_preload_content',
555
+ '_request_timeout',
556
+ '_request_auth',
557
+ '_content_type',
558
+ '_headers',
559
+ 'opts'
560
+ ]
561
+ )
562
+
563
+ # validate the arguments
564
+ for _key, _val in _params['kwargs'].items():
565
+ if _key not in _all_params:
566
+ raise ApiTypeError(
567
+ "Got an unexpected keyword argument '%s'"
568
+ " to method list_all_investor_records" % _key
569
+ )
570
+ _params[_key] = _val
571
+ del _params['kwargs']
572
+
573
+ _collection_formats = {}
574
+
575
+ # process the path parameters
576
+ _path_params = {}
577
+
578
+ # process the query parameters
579
+ _query_params = []
580
+ if _params.get('effective_at') is not None: # noqa: E501
581
+ _query_params.append(('effectiveAt', _params['effective_at']))
582
+
583
+ if _params.get('as_at') is not None: # noqa: E501
584
+ if isinstance(_params['as_at'], datetime):
585
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
586
+ else:
587
+ _query_params.append(('asAt', _params['as_at']))
588
+
589
+ if _params.get('page') is not None: # noqa: E501
590
+ _query_params.append(('page', _params['page']))
591
+
592
+ if _params.get('limit') is not None: # noqa: E501
593
+ _query_params.append(('limit', _params['limit']))
594
+
595
+ if _params.get('filter') is not None: # noqa: E501
596
+ _query_params.append(('filter', _params['filter']))
597
+
598
+ if _params.get('sort_by') is not None: # noqa: E501
599
+ _query_params.append(('sortBy', _params['sort_by']))
600
+ _collection_formats['sortBy'] = 'multi'
601
+
602
+ if _params.get('property_keys') is not None: # noqa: E501
603
+ _query_params.append(('propertyKeys', _params['property_keys']))
604
+ _collection_formats['propertyKeys'] = 'multi'
605
+
606
+ if _params.get('relationship_definition_ids') is not None: # noqa: E501
607
+ _query_params.append(('relationshipDefinitionIds', _params['relationship_definition_ids']))
608
+ _collection_formats['relationshipDefinitionIds'] = 'multi'
609
+
610
+ # process the header parameters
611
+ _header_params = dict(_params.get('_headers', {}))
612
+ # process the form parameters
613
+ _form_params = []
614
+ _files = {}
615
+ # process the body parameter
616
+ _body_params = None
617
+ # set the HTTP header `Accept`
618
+ _header_params['Accept'] = self.api_client.select_header_accept(
619
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
620
+
621
+ # authentication setting
622
+ _auth_settings = ['oauth2'] # noqa: E501
623
+
624
+ _response_types_map = {
625
+ '200': "ResourceListOfInvestorRecord",
626
+ '400': "LusidValidationProblemDetails",
627
+ }
628
+
629
+ return self.api_client.call_api(
630
+ '/api/investorrecords', 'GET',
631
+ _path_params,
632
+ _query_params,
633
+ _header_params,
634
+ body=_body_params,
635
+ post_params=_form_params,
636
+ files=_files,
637
+ response_types_map=_response_types_map,
638
+ auth_settings=_auth_settings,
639
+ async_req=_params.get('async_req'),
640
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
641
+ _preload_content=_params.get('_preload_content', True),
642
+ _request_timeout=_params.get('_request_timeout'),
643
+ opts=_params.get('opts'),
644
+ collection_formats=_collection_formats,
645
+ _request_auth=_params.get('_request_auth'))
646
+
647
+
433
648
  @overload
434
649
  async def upsert_investor_records(self, success_mode : Annotated[StrictStr, Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial")], request_body : Annotated[Dict[str, UpsertInvestorRecordRequest], Field(..., description="A collection of requests to create or update Investor Records.")], **kwargs) -> UpsertInvestorRecordsResponse: # noqa: E501
435
650
  ...
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.7823\n"\
448
+ "Version of the API: 0.11.7831\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
@@ -120,6 +120,7 @@ from lusid.models.bool_list_compliance_parameter import BoolListComplianceParame
120
120
  from lusid.models.branch_step import BranchStep
121
121
  from lusid.models.branch_step_request import BranchStepRequest
122
122
  from lusid.models.break_code_source import BreakCodeSource
123
+ from lusid.models.bucket import Bucket
123
124
  from lusid.models.bucketed_cash_flow_request import BucketedCashFlowRequest
124
125
  from lusid.models.bucketed_cash_flow_response import BucketedCashFlowResponse
125
126
  from lusid.models.bucketing_schedule import BucketingSchedule
@@ -350,6 +351,7 @@ from lusid.models.economic_dependency import EconomicDependency
350
351
  from lusid.models.economic_dependency_type import EconomicDependencyType
351
352
  from lusid.models.economic_dependency_with_complex_market_data import EconomicDependencyWithComplexMarketData
352
353
  from lusid.models.economic_dependency_with_quote import EconomicDependencyWithQuote
354
+ from lusid.models.economics import Economics
353
355
  from lusid.models.effective_range import EffectiveRange
354
356
  from lusid.models.election_specification import ElectionSpecification
355
357
  from lusid.models.eligibility_calculation import EligibilityCalculation
@@ -920,6 +922,7 @@ from lusid.models.resource_list_of_i_unit_definition_dto import ResourceListOfIU
920
922
  from lusid.models.resource_list_of_instrument_cash_flow import ResourceListOfInstrumentCashFlow
921
923
  from lusid.models.resource_list_of_instrument_event_holder import ResourceListOfInstrumentEventHolder
922
924
  from lusid.models.resource_list_of_instrument_id_type_descriptor import ResourceListOfInstrumentIdTypeDescriptor
925
+ from lusid.models.resource_list_of_investor_record import ResourceListOfInvestorRecord
923
926
  from lusid.models.resource_list_of_legal_entity import ResourceListOfLegalEntity
924
927
  from lusid.models.resource_list_of_list_complex_market_data_with_meta_data_response import ResourceListOfListComplexMarketDataWithMetaDataResponse
925
928
  from lusid.models.resource_list_of_mapping import ResourceListOfMapping
@@ -1342,6 +1345,7 @@ __all__ = [
1342
1345
  "BranchStep",
1343
1346
  "BranchStepRequest",
1344
1347
  "BreakCodeSource",
1348
+ "Bucket",
1345
1349
  "BucketedCashFlowRequest",
1346
1350
  "BucketedCashFlowResponse",
1347
1351
  "BucketingSchedule",
@@ -1572,6 +1576,7 @@ __all__ = [
1572
1576
  "EconomicDependencyType",
1573
1577
  "EconomicDependencyWithComplexMarketData",
1574
1578
  "EconomicDependencyWithQuote",
1579
+ "Economics",
1575
1580
  "EffectiveRange",
1576
1581
  "ElectionSpecification",
1577
1582
  "EligibilityCalculation",
@@ -2142,6 +2147,7 @@ __all__ = [
2142
2147
  "ResourceListOfInstrumentCashFlow",
2143
2148
  "ResourceListOfInstrumentEventHolder",
2144
2149
  "ResourceListOfInstrumentIdTypeDescriptor",
2150
+ "ResourceListOfInvestorRecord",
2145
2151
  "ResourceListOfLegalEntity",
2146
2152
  "ResourceListOfListComplexMarketDataWithMetaDataResponse",
2147
2153
  "ResourceListOfMapping",
lusid/models/bucket.py ADDED
@@ -0,0 +1,137 @@
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, Union
22
+ from pydantic.v1 import StrictStr, Field, BaseModel, Field, StrictFloat, StrictInt, StrictStr
23
+ from lusid.models.currency_and_amount import CurrencyAndAmount
24
+
25
+ class Bucket(BaseModel):
26
+ """
27
+ Bucket
28
+ """
29
+ tax_lot_id: Optional[StrictStr] = Field(None,alias="taxLotId", description="The identifier of the tax lot this bucket is for.")
30
+ movement_name: Optional[StrictStr] = Field(None,alias="movementName", description="The name of the movement.")
31
+ holding_type: Optional[StrictStr] = Field(None,alias="holdingType", description="The type of the holding.")
32
+ economic_bucket: Optional[StrictStr] = Field(None,alias="economicBucket", description="The economic bucket.")
33
+ economic_bucket_component: Optional[StrictStr] = Field(None,alias="economicBucketComponent", description="The economic bucket component.")
34
+ economic_bucket_variant: Optional[StrictStr] = Field(None,alias="economicBucketVariant", description="The economic bucket component.")
35
+ holding_sign: Optional[StrictStr] = Field(None,alias="holdingSign", description="The holding sign.")
36
+ local: Optional[CurrencyAndAmount] = None
37
+ base: Optional[CurrencyAndAmount] = None
38
+ units: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="The units.")
39
+ __properties = ["taxLotId", "movementName", "holdingType", "economicBucket", "economicBucketComponent", "economicBucketVariant", "holdingSign", "local", "base", "units"]
40
+
41
+ class Config:
42
+ """Pydantic configuration"""
43
+ allow_population_by_field_name = True
44
+ validate_assignment = True
45
+
46
+ def __str__(self):
47
+ """For `print` and `pprint`"""
48
+ return pprint.pformat(self.dict(by_alias=False))
49
+
50
+ def __repr__(self):
51
+ """For `print` and `pprint`"""
52
+ return self.to_str()
53
+
54
+ def to_str(self) -> str:
55
+ """Returns the string representation of the model using alias"""
56
+ return pprint.pformat(self.dict(by_alias=True))
57
+
58
+ def to_json(self) -> str:
59
+ """Returns the JSON representation of the model using alias"""
60
+ return json.dumps(self.to_dict())
61
+
62
+ @classmethod
63
+ def from_json(cls, json_str: str) -> Bucket:
64
+ """Create an instance of Bucket from a JSON string"""
65
+ return cls.from_dict(json.loads(json_str))
66
+
67
+ def to_dict(self):
68
+ """Returns the dictionary representation of the model using alias"""
69
+ _dict = self.dict(by_alias=True,
70
+ exclude={
71
+ },
72
+ exclude_none=True)
73
+ # override the default output from pydantic by calling `to_dict()` of local
74
+ if self.local:
75
+ _dict['local'] = self.local.to_dict()
76
+ # override the default output from pydantic by calling `to_dict()` of base
77
+ if self.base:
78
+ _dict['base'] = self.base.to_dict()
79
+ # set to None if tax_lot_id (nullable) is None
80
+ # and __fields_set__ contains the field
81
+ if self.tax_lot_id is None and "tax_lot_id" in self.__fields_set__:
82
+ _dict['taxLotId'] = None
83
+
84
+ # set to None if movement_name (nullable) is None
85
+ # and __fields_set__ contains the field
86
+ if self.movement_name is None and "movement_name" in self.__fields_set__:
87
+ _dict['movementName'] = None
88
+
89
+ # set to None if holding_type (nullable) is None
90
+ # and __fields_set__ contains the field
91
+ if self.holding_type is None and "holding_type" in self.__fields_set__:
92
+ _dict['holdingType'] = None
93
+
94
+ # set to None if economic_bucket (nullable) is None
95
+ # and __fields_set__ contains the field
96
+ if self.economic_bucket is None and "economic_bucket" in self.__fields_set__:
97
+ _dict['economicBucket'] = None
98
+
99
+ # set to None if economic_bucket_component (nullable) is None
100
+ # and __fields_set__ contains the field
101
+ if self.economic_bucket_component is None and "economic_bucket_component" in self.__fields_set__:
102
+ _dict['economicBucketComponent'] = None
103
+
104
+ # set to None if economic_bucket_variant (nullable) is None
105
+ # and __fields_set__ contains the field
106
+ if self.economic_bucket_variant is None and "economic_bucket_variant" in self.__fields_set__:
107
+ _dict['economicBucketVariant'] = None
108
+
109
+ # set to None if holding_sign (nullable) is None
110
+ # and __fields_set__ contains the field
111
+ if self.holding_sign is None and "holding_sign" in self.__fields_set__:
112
+ _dict['holdingSign'] = None
113
+
114
+ return _dict
115
+
116
+ @classmethod
117
+ def from_dict(cls, obj: dict) -> Bucket:
118
+ """Create an instance of Bucket from a dict"""
119
+ if obj is None:
120
+ return None
121
+
122
+ if not isinstance(obj, dict):
123
+ return Bucket.parse_obj(obj)
124
+
125
+ _obj = Bucket.parse_obj({
126
+ "tax_lot_id": obj.get("taxLotId"),
127
+ "movement_name": obj.get("movementName"),
128
+ "holding_type": obj.get("holdingType"),
129
+ "economic_bucket": obj.get("economicBucket"),
130
+ "economic_bucket_component": obj.get("economicBucketComponent"),
131
+ "economic_bucket_variant": obj.get("economicBucketVariant"),
132
+ "holding_sign": obj.get("holdingSign"),
133
+ "local": CurrencyAndAmount.from_dict(obj.get("local")) if obj.get("local") is not None else None,
134
+ "base": CurrencyAndAmount.from_dict(obj.get("base")) if obj.get("base") is not None else None,
135
+ "units": obj.get("units")
136
+ })
137
+ return _obj
@@ -30,6 +30,7 @@ class ChangeInterval(BaseModel):
30
30
  as_at_modified: Optional[datetime] = Field(None, alias="asAtModified", description="The date/time of the change.")
31
31
  user_id_modified: Optional[StrictStr] = Field(None,alias="userIdModified", description="The unique identifier of the user that made the change.")
32
32
  request_id_modified: Optional[StrictStr] = Field(None,alias="requestIdModified", description="The unique identifier of the request that the changes were part of.")
33
+ reason_modified: Optional[StrictStr] = Field(None,alias="reasonModified", description="The reason for an entity modification.")
33
34
  as_at_version_number: Optional[StrictInt] = Field(None, alias="asAtVersionNumber", description="The version number for the entity (the entity was created at version 1). This may refer to the version number of a changed related entity, not a change for the entity itself.")
34
35
  staged_modification_id_modified: Optional[StrictStr] = Field(None,alias="stagedModificationIdModified", description="The id of the staged modification that was approved. Will be null if the change didn't come from a staged modification.")
35
36
  action: Optional[StrictStr] = Field(None,alias="action", description="The action performed on the field.")
@@ -37,7 +38,7 @@ class ChangeInterval(BaseModel):
37
38
  previous_value: Optional[PropertyValue] = Field(None, alias="previousValue")
38
39
  new_value: Optional[PropertyValue] = Field(None, alias="newValue")
39
40
  effective_range: Optional[EffectiveRange] = Field(None, alias="effectiveRange")
40
- __properties = ["asAtModified", "userIdModified", "requestIdModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
41
+ __properties = ["asAtModified", "userIdModified", "requestIdModified", "reasonModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
41
42
 
42
43
  class Config:
43
44
  """Pydantic configuration"""
@@ -90,6 +91,11 @@ class ChangeInterval(BaseModel):
90
91
  if self.request_id_modified is None and "request_id_modified" in self.__fields_set__:
91
92
  _dict['requestIdModified'] = None
92
93
 
94
+ # set to None if reason_modified (nullable) is None
95
+ # and __fields_set__ contains the field
96
+ if self.reason_modified is None and "reason_modified" in self.__fields_set__:
97
+ _dict['reasonModified'] = None
98
+
93
99
  # set to None if staged_modification_id_modified (nullable) is None
94
100
  # and __fields_set__ contains the field
95
101
  if self.staged_modification_id_modified is None and "staged_modification_id_modified" in self.__fields_set__:
@@ -120,6 +126,7 @@ class ChangeInterval(BaseModel):
120
126
  "as_at_modified": obj.get("asAtModified"),
121
127
  "user_id_modified": obj.get("userIdModified"),
122
128
  "request_id_modified": obj.get("requestIdModified"),
129
+ "reason_modified": obj.get("reasonModified"),
123
130
  "as_at_version_number": obj.get("asAtVersionNumber"),
124
131
  "staged_modification_id_modified": obj.get("stagedModificationIdModified"),
125
132
  "action": obj.get("action"),
@@ -32,6 +32,7 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
32
32
  as_at_modified: Optional[datetime] = Field(None, alias="asAtModified", description="The date/time of the change.")
33
33
  user_id_modified: Optional[StrictStr] = Field(None,alias="userIdModified", description="The unique identifier of the user that made the change.")
34
34
  request_id_modified: Optional[StrictStr] = Field(None,alias="requestIdModified", description="The unique identifier of the request that the changes were part of.")
35
+ reason_modified: Optional[StrictStr] = Field(None,alias="reasonModified", description="The reason for an entity modification.")
35
36
  as_at_version_number: Optional[StrictInt] = Field(None, alias="asAtVersionNumber", description="The version number for the entity (the entity was created at version 1). This may refer to the version number of a changed related entity, not a change for the entity itself.")
36
37
  staged_modification_id_modified: Optional[StrictStr] = Field(None,alias="stagedModificationIdModified", description="The id of the staged modification that was approved. Will be null if the change didn't come from a staged modification.")
37
38
  action: Optional[StrictStr] = Field(None,alias="action", description="The action performed on the field.")
@@ -39,7 +40,7 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
39
40
  previous_value: Optional[PropertyValue] = Field(None, alias="previousValue")
40
41
  new_value: Optional[PropertyValue] = Field(None, alias="newValue")
41
42
  effective_range: Optional[EffectiveRange] = Field(None, alias="effectiveRange")
42
- __properties = ["detail", "actionDescription", "asAtModified", "userIdModified", "requestIdModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
43
+ __properties = ["detail", "actionDescription", "asAtModified", "userIdModified", "requestIdModified", "reasonModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
43
44
 
44
45
  class Config:
45
46
  """Pydantic configuration"""
@@ -102,6 +103,11 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
102
103
  if self.request_id_modified is None and "request_id_modified" in self.__fields_set__:
103
104
  _dict['requestIdModified'] = None
104
105
 
106
+ # set to None if reason_modified (nullable) is None
107
+ # and __fields_set__ contains the field
108
+ if self.reason_modified is None and "reason_modified" in self.__fields_set__:
109
+ _dict['reasonModified'] = None
110
+
105
111
  # set to None if staged_modification_id_modified (nullable) is None
106
112
  # and __fields_set__ contains the field
107
113
  if self.staged_modification_id_modified is None and "staged_modification_id_modified" in self.__fields_set__:
@@ -134,6 +140,7 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
134
140
  "as_at_modified": obj.get("asAtModified"),
135
141
  "user_id_modified": obj.get("userIdModified"),
136
142
  "request_id_modified": obj.get("requestIdModified"),
143
+ "reason_modified": obj.get("reasonModified"),
137
144
  "as_at_version_number": obj.get("asAtVersionNumber"),
138
145
  "staged_modification_id_modified": obj.get("stagedModificationIdModified"),
139
146
  "action": obj.get("action"),
@@ -0,0 +1,119 @@
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, List, Optional
22
+ from pydantic.v1 import StrictStr, Field, BaseModel, Field, StrictStr, conlist, constr
23
+ from lusid.models.bucket import Bucket
24
+ from lusid.models.perpetual_property import PerpetualProperty
25
+
26
+ class Economics(BaseModel):
27
+ """
28
+ Economics
29
+ """
30
+ instrument_scope: Optional[StrictStr] = Field(None,alias="instrumentScope", description="The scope in which the instrument lies.")
31
+ lusid_instrument_id: StrictStr = Field(...,alias="lusidInstrumentId", description="The unique Lusid Instrument Id (LUID) of the instrument that economics are for.")
32
+ sub_holding_keys: Optional[Dict[str, PerpetualProperty]] = Field(None, alias="subHoldingKeys", description="The sub-holding properties which identify the Economic. Each property will be from the 'Transaction' domain. These are configured on a transaction portfolio.")
33
+ buckets: Optional[conlist(Bucket)] = Field(None, description="Set of economic data related with each of the side impact of the transaction.")
34
+ __properties = ["instrumentScope", "lusidInstrumentId", "subHoldingKeys", "buckets"]
35
+
36
+ class Config:
37
+ """Pydantic configuration"""
38
+ allow_population_by_field_name = True
39
+ validate_assignment = True
40
+
41
+ def __str__(self):
42
+ """For `print` and `pprint`"""
43
+ return pprint.pformat(self.dict(by_alias=False))
44
+
45
+ def __repr__(self):
46
+ """For `print` and `pprint`"""
47
+ return self.to_str()
48
+
49
+ def to_str(self) -> str:
50
+ """Returns the string representation of the model using alias"""
51
+ return pprint.pformat(self.dict(by_alias=True))
52
+
53
+ def to_json(self) -> str:
54
+ """Returns the JSON representation of the model using alias"""
55
+ return json.dumps(self.to_dict())
56
+
57
+ @classmethod
58
+ def from_json(cls, json_str: str) -> Economics:
59
+ """Create an instance of Economics from a JSON string"""
60
+ return cls.from_dict(json.loads(json_str))
61
+
62
+ def to_dict(self):
63
+ """Returns the dictionary representation of the model using alias"""
64
+ _dict = self.dict(by_alias=True,
65
+ exclude={
66
+ },
67
+ exclude_none=True)
68
+ # override the default output from pydantic by calling `to_dict()` of each value in sub_holding_keys (dict)
69
+ _field_dict = {}
70
+ if self.sub_holding_keys:
71
+ for _key in self.sub_holding_keys:
72
+ if self.sub_holding_keys[_key]:
73
+ _field_dict[_key] = self.sub_holding_keys[_key].to_dict()
74
+ _dict['subHoldingKeys'] = _field_dict
75
+ # override the default output from pydantic by calling `to_dict()` of each item in buckets (list)
76
+ _items = []
77
+ if self.buckets:
78
+ for _item in self.buckets:
79
+ if _item:
80
+ _items.append(_item.to_dict())
81
+ _dict['buckets'] = _items
82
+ # set to None if instrument_scope (nullable) is None
83
+ # and __fields_set__ contains the field
84
+ if self.instrument_scope is None and "instrument_scope" in self.__fields_set__:
85
+ _dict['instrumentScope'] = None
86
+
87
+ # set to None if sub_holding_keys (nullable) is None
88
+ # and __fields_set__ contains the field
89
+ if self.sub_holding_keys is None and "sub_holding_keys" in self.__fields_set__:
90
+ _dict['subHoldingKeys'] = None
91
+
92
+ # set to None if buckets (nullable) is None
93
+ # and __fields_set__ contains the field
94
+ if self.buckets is None and "buckets" in self.__fields_set__:
95
+ _dict['buckets'] = None
96
+
97
+ return _dict
98
+
99
+ @classmethod
100
+ def from_dict(cls, obj: dict) -> Economics:
101
+ """Create an instance of Economics from a dict"""
102
+ if obj is None:
103
+ return None
104
+
105
+ if not isinstance(obj, dict):
106
+ return Economics.parse_obj(obj)
107
+
108
+ _obj = Economics.parse_obj({
109
+ "instrument_scope": obj.get("instrumentScope"),
110
+ "lusid_instrument_id": obj.get("lusidInstrumentId"),
111
+ "sub_holding_keys": dict(
112
+ (_k, PerpetualProperty.from_dict(_v))
113
+ for _k, _v in obj.get("subHoldingKeys").items()
114
+ )
115
+ if obj.get("subHoldingKeys") is not None
116
+ else None,
117
+ "buckets": [Bucket.from_dict(_item) for _item in obj.get("buckets")] if obj.get("buckets") is not None else None
118
+ })
119
+ return _obj
@@ -28,7 +28,7 @@ class MarketDataKeyRule(BaseModel):
28
28
  key: StrictStr = Field(...,alias="key", description="A dot-separated string that defines a pattern for matching market data dependencies. The form of the string depends on the type of the dependency; see below for basic types and the Knowledge Base for further info. Quote lookup: \"Quote.{CodeType}.*\" e.g. \"Quote.RIC.*\" refers to 'any RIC quote' Fx rates: \"Fx.CurrencyPair.*\", which refers to 'any FX rate' Discounting curves: \"Rates.{Currency}.{Currency}OIS e.g. \"Rates.USD.USDOIS\" refers to the OIS USD discounting curve For non-fx and non-quote rules, trailing parameters can be replaced by the wildcard character '*'. e.g. \"Rates.*.*\" matches any dependency on a discounting curve.")
29
29
  supplier: StrictStr = Field(...,alias="supplier", description="The market data supplier (where the data comes from)")
30
30
  data_scope: StrictStr = Field(...,alias="dataScope", description="The scope in which the data should be found when using this rule.")
31
- quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
31
+ quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall, ConstituentWeightFactor")
32
32
  field: Optional[StrictStr] = Field(None,alias="field", description="The conceptual qualification for the field, typically 'bid', 'mid' (default), or 'ask', but can also be 'open', 'close', etc. When resolving quotes from LUSID's database, only quotes whose Field is identical to the Field specified here will be accepted as market data. When resolving data from an external supplier, the Field must be one of a defined set for the given supplier. Note: Applies to the retrieval of quotes only. Has no impact on the resolution of complex market data.")
33
33
  quote_interval: Optional[StrictStr] = Field(None,alias="quoteInterval", description="Shorthand for the time interval used to select market data. This must be a dot-separated string nominating a start and end date, for example '5D.0D' to look back 5 days from today (0 days ago). The syntax is <i>int</i><i>char</i>.<i>int</i><i>char</i>, where <i>char</i> is one of D(ay), Bd(business day), W(eek), M(onth) or Y(ear). Business days are calculated using the calendars specified on the Valuation Request. If no calendar is provided in the request, then it will default to only skipping weekends. For example, if the valuation date is a Monday, then a quote interval of \"1Bd\" would behave as \"3D\", looking back to the Friday. Data with effectiveAt on the weekend will still be found in that window.")
34
34
  as_at: Optional[datetime] = Field(None, alias="asAt", description="Deprecated field which no longer has any effect on market data resolution.")
@@ -93,8 +93,8 @@ class MarketDataKeyRule(BaseModel):
93
93
  if "quote_type" != "type":
94
94
  return value
95
95
 
96
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
97
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
96
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor'):
97
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor')")
98
98
  return value
99
99
 
100
100
  class Config:
@@ -29,7 +29,7 @@ class MarketDataSpecificRule(BaseModel):
29
29
  key: StrictStr = Field(...,alias="key", description="The market data key pattern which this is a rule for. A dot separated string (A.B.C.D.*)")
30
30
  supplier: StrictStr = Field(...,alias="supplier", description="The market data supplier (where the data comes from)")
31
31
  data_scope: StrictStr = Field(...,alias="dataScope", description="The scope in which the data should be found when using this rule.")
32
- quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
32
+ quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall, ConstituentWeightFactor")
33
33
  field: StrictStr = Field(...,alias="field", description="The conceptual qualification for the field, such as bid, mid, or ask. The field must be one of a defined set for the given supplier, in the same way as it is for the Finbourne.WebApi.Interface.Dto.Quotes.QuoteSeriesId")
34
34
  quote_interval: Optional[StrictStr] = Field(None,alias="quoteInterval", description="Shorthand for the time interval used to select market data. This must be a dot-separated string nominating a start and end date, for example '5D.0D' to look back 5 days from today (0 days ago). The syntax is <i>int</i><i>char</i>.<i>int</i><i>char</i>, where <i>char</i> is one of D(ay), W(eek), M(onth) or Y(ear).")
35
35
  as_at: Optional[datetime] = Field(None, alias="asAt", description="Deprecated field which no longer has any effect on market data resolution.")
@@ -95,8 +95,8 @@ class MarketDataSpecificRule(BaseModel):
95
95
  if "quote_type" != "type":
96
96
  return value
97
97
 
98
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
99
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
98
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor'):
99
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor')")
100
100
  return value
101
101
 
102
102
  class Config:
@@ -25,7 +25,7 @@ class MarketQuote(BaseModel):
25
25
  """
26
26
  The market quote for an observable which will be used to calibrate the market data, including the format of the quote. e.g. a volatility quote for a specific strike and expiry the par rate of a swap This is a slimmed down version of a full Quote that can be stored in our QuoteStore to remove lineage, price source etc. for ease of use when creating complex market data. # noqa: E501
27
27
  """
28
- quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
28
+ quote_type: StrictStr = Field(...,alias="quoteType", description="The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall, ConstituentWeightFactor")
29
29
  value: Union[StrictFloat, StrictInt] = Field(..., description="Numeric value of the quote")
30
30
  __properties = ["quoteType", "value"]
31
31
 
@@ -84,8 +84,8 @@ class MarketQuote(BaseModel):
84
84
  if "quote_type" != "type":
85
85
  return value
86
86
 
87
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
88
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
87
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor'):
88
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor')")
89
89
  return value
90
90
 
91
91
  class Config:
@@ -22,6 +22,7 @@ from typing import Any, Dict, List, Optional, Union
22
22
  from pydantic.v1 import StrictStr, Field, BaseModel, Field, StrictFloat, StrictInt, StrictStr, conlist, constr, validator
23
23
  from lusid.models.currency_and_amount import CurrencyAndAmount
24
24
  from lusid.models.custodian_account import CustodianAccount
25
+ from lusid.models.economics import Economics
25
26
  from lusid.models.otc_confirmation import OtcConfirmation
26
27
  from lusid.models.perpetual_property import PerpetualProperty
27
28
  from lusid.models.realised_gain_loss import RealisedGainLoss
@@ -66,7 +67,8 @@ class OutputTransaction(BaseModel):
66
67
  order_id: Optional[ResourceId] = Field(None, alias="orderId")
67
68
  allocation_id: Optional[ResourceId] = Field(None, alias="allocationId")
68
69
  accounting_date: Optional[datetime] = Field(None, alias="accountingDate", description="The accounting date of the transaction.")
69
- __properties = ["transactionId", "type", "description", "instrumentIdentifiers", "instrumentScope", "instrumentUid", "transactionDate", "settlementDate", "units", "transactionAmount", "transactionPrice", "totalConsideration", "exchangeRate", "transactionToPortfolioRate", "transactionCurrency", "properties", "counterpartyId", "source", "transactionStatus", "entryDateTime", "cancelDateTime", "realisedGainLoss", "holdingIds", "sourceType", "sourceInstrumentEventId", "custodianAccount", "transactionGroupId", "resolvedTransactionTypeDetails", "grossTransactionAmount", "otcConfirmation", "orderId", "allocationId", "accountingDate"]
70
+ economics: Optional[conlist(Economics)] = Field(None, description="Set of economic data related with the transaction impacts.")
71
+ __properties = ["transactionId", "type", "description", "instrumentIdentifiers", "instrumentScope", "instrumentUid", "transactionDate", "settlementDate", "units", "transactionAmount", "transactionPrice", "totalConsideration", "exchangeRate", "transactionToPortfolioRate", "transactionCurrency", "properties", "counterpartyId", "source", "transactionStatus", "entryDateTime", "cancelDateTime", "realisedGainLoss", "holdingIds", "sourceType", "sourceInstrumentEventId", "custodianAccount", "transactionGroupId", "resolvedTransactionTypeDetails", "grossTransactionAmount", "otcConfirmation", "orderId", "allocationId", "accountingDate", "economics"]
70
72
 
71
73
  @validator('transaction_status')
72
74
  def transaction_status_validate_enum(cls, value):
@@ -197,6 +199,13 @@ class OutputTransaction(BaseModel):
197
199
  # override the default output from pydantic by calling `to_dict()` of allocation_id
198
200
  if self.allocation_id:
199
201
  _dict['allocationId'] = self.allocation_id.to_dict()
202
+ # override the default output from pydantic by calling `to_dict()` of each item in economics (list)
203
+ _items = []
204
+ if self.economics:
205
+ for _item in self.economics:
206
+ if _item:
207
+ _items.append(_item.to_dict())
208
+ _dict['economics'] = _items
200
209
  # set to None if description (nullable) is None
201
210
  # and __fields_set__ contains the field
202
211
  if self.description is None and "description" in self.__fields_set__:
@@ -272,6 +281,11 @@ class OutputTransaction(BaseModel):
272
281
  if self.accounting_date is None and "accounting_date" in self.__fields_set__:
273
282
  _dict['accountingDate'] = None
274
283
 
284
+ # set to None if economics (nullable) is None
285
+ # and __fields_set__ contains the field
286
+ if self.economics is None and "economics" in self.__fields_set__:
287
+ _dict['economics'] = None
288
+
275
289
  return _dict
276
290
 
277
291
  @classmethod
@@ -321,6 +335,7 @@ class OutputTransaction(BaseModel):
321
335
  "otc_confirmation": OtcConfirmation.from_dict(obj.get("otcConfirmation")) if obj.get("otcConfirmation") is not None else None,
322
336
  "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None,
323
337
  "allocation_id": ResourceId.from_dict(obj.get("allocationId")) if obj.get("allocationId") is not None else None,
324
- "accounting_date": obj.get("accountingDate")
338
+ "accounting_date": obj.get("accountingDate"),
339
+ "economics": [Economics.from_dict(_item) for _item in obj.get("economics")] if obj.get("economics") is not None else None
325
340
  })
326
341
  return _obj
@@ -29,7 +29,7 @@ class QuoteSeriesId(BaseModel):
29
29
  price_source: Optional[StrictStr] = Field(None,alias="priceSource", description="The source or originator of the quote, e.g. a bank or financial institution.")
30
30
  instrument_id: StrictStr = Field(...,alias="instrumentId", description="The value of the instrument identifier that uniquely identifies the instrument that the quote is for, e.g. 'BBG00JX0P539'.")
31
31
  instrument_id_type: StrictStr = Field(...,alias="instrumentIdType", description="The type of instrument identifier used to uniquely identify the instrument that the quote is for, e.g. 'Figi'. The available values are: LusidInstrumentId, Figi, RIC, QuotePermId, Isin, CurrencyPair, ClientInternal, Sedol, Cusip")
32
- quote_type: StrictStr = Field(...,alias="quoteType", description="The type of the quote. This allows for quotes other than prices e.g. rates or spreads to be used. The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall")
32
+ quote_type: StrictStr = Field(...,alias="quoteType", description="The type of the quote. This allows for quotes other than prices e.g. rates or spreads to be used. The available values are: Price, Spread, Rate, LogNormalVol, NormalVol, ParSpread, IsdaSpread, Upfront, Index, Ratio, Delta, PoolFactor, InflationAssumption, DirtyPrice, PrincipalWriteOff, InterestDeferred, InterestShortfall, ConstituentWeightFactor")
33
33
  field: StrictStr = Field(...,alias="field", description="The field of the quote e.g. bid, mid, ask etc. This should be consistent across a time series of quotes. The allowed values depend on the provider according to the following rules: Client : *Any value is accepted*; DataScope : 'bid', 'mid', 'ask'; Lusid : *Any value is accepted*; Edi : 'bid', 'mid', 'ask', 'open', 'close', 'last'; TraderMade : 'bid', 'mid', 'ask', 'open', 'close', 'high', 'low'; FactSet : 'bid', 'mid', 'ask', 'open', 'close'; SIX : 'bid', 'mid', 'ask', 'open', 'close', 'last', 'referencePrice', 'highPrice', 'lowPrice', 'maxRedemptionPrice', 'maxSubscriptionPrice', 'openPrice', 'bestBidPrice', 'lastBidPrice', 'bestAskPrice', 'lastAskPrice', 'finalSettlementOptions', 'finalSettlementFutures', 'valuationPriceAmount'; Bloomberg : 'bid', 'mid', 'ask', 'open', 'close', 'last'; Rimes : 'bid', 'mid', 'ask', 'open', 'close', 'last'; ICE : 'ask', 'bid', 'close', 'high', 'low', 'open', 'primaryExchangeTradePrice', 'vwap', 'mid'; LSEG : 'ASK', 'BID', 'MID_PRICE'")
34
34
  __properties = ["provider", "priceSource", "instrumentId", "instrumentIdType", "quoteType", "field"]
35
35
 
@@ -147,8 +147,8 @@ class QuoteSeriesId(BaseModel):
147
147
  if "quote_type" != "type":
148
148
  return value
149
149
 
150
- if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall'):
151
- raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall')")
150
+ if value not in ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor'):
151
+ raise ValueError("must be one of enum values ('Price', 'Spread', 'Rate', 'LogNormalVol', 'NormalVol', 'ParSpread', 'IsdaSpread', 'Upfront', 'Index', 'Ratio', 'Delta', 'PoolFactor', 'InflationAssumption', 'DirtyPrice', 'PrincipalWriteOff', 'InterestDeferred', 'InterestShortfall', 'ConstituentWeightFactor')")
152
152
  return value
153
153
 
154
154
  class Config:
@@ -46,6 +46,7 @@ class QuoteType(str, Enum):
46
46
  PRINCIPALWRITEOFF = 'PrincipalWriteOff'
47
47
  INTERESTDEFERRED = 'InterestDeferred'
48
48
  INTERESTSHORTFALL = 'InterestShortfall'
49
+ CONSTITUENTWEIGHTFACTOR = 'ConstituentWeightFactor'
49
50
 
50
51
  @classmethod
51
52
  def from_json(cls, json_str: str) -> QuoteType:
@@ -0,0 +1,121 @@
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, List, Optional
22
+ from pydantic.v1 import StrictStr, Field, BaseModel, Field, StrictStr, conlist
23
+ from lusid.models.investor_record import InvestorRecord
24
+ from lusid.models.link import Link
25
+
26
+ class ResourceListOfInvestorRecord(BaseModel):
27
+ """
28
+ ResourceListOfInvestorRecord
29
+ """
30
+ values: conlist(InvestorRecord) = Field(...)
31
+ href: Optional[StrictStr] = Field(None,alias="href")
32
+ links: Optional[conlist(Link)] = None
33
+ next_page: Optional[StrictStr] = Field(None,alias="nextPage")
34
+ previous_page: Optional[StrictStr] = Field(None,alias="previousPage")
35
+ __properties = ["values", "href", "links", "nextPage", "previousPage"]
36
+
37
+ class Config:
38
+ """Pydantic configuration"""
39
+ allow_population_by_field_name = True
40
+ validate_assignment = True
41
+
42
+ def __str__(self):
43
+ """For `print` and `pprint`"""
44
+ return pprint.pformat(self.dict(by_alias=False))
45
+
46
+ def __repr__(self):
47
+ """For `print` and `pprint`"""
48
+ return self.to_str()
49
+
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.dict(by_alias=True))
53
+
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ return json.dumps(self.to_dict())
57
+
58
+ @classmethod
59
+ def from_json(cls, json_str: str) -> ResourceListOfInvestorRecord:
60
+ """Create an instance of ResourceListOfInvestorRecord from a JSON string"""
61
+ return cls.from_dict(json.loads(json_str))
62
+
63
+ def to_dict(self):
64
+ """Returns the dictionary representation of the model using alias"""
65
+ _dict = self.dict(by_alias=True,
66
+ exclude={
67
+ },
68
+ exclude_none=True)
69
+ # override the default output from pydantic by calling `to_dict()` of each item in values (list)
70
+ _items = []
71
+ if self.values:
72
+ for _item in self.values:
73
+ if _item:
74
+ _items.append(_item.to_dict())
75
+ _dict['values'] = _items
76
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
77
+ _items = []
78
+ if self.links:
79
+ for _item in self.links:
80
+ if _item:
81
+ _items.append(_item.to_dict())
82
+ _dict['links'] = _items
83
+ # set to None if href (nullable) is None
84
+ # and __fields_set__ contains the field
85
+ if self.href is None and "href" in self.__fields_set__:
86
+ _dict['href'] = None
87
+
88
+ # set to None if links (nullable) is None
89
+ # and __fields_set__ contains the field
90
+ if self.links is None and "links" in self.__fields_set__:
91
+ _dict['links'] = None
92
+
93
+ # set to None if next_page (nullable) is None
94
+ # and __fields_set__ contains the field
95
+ if self.next_page is None and "next_page" in self.__fields_set__:
96
+ _dict['nextPage'] = None
97
+
98
+ # set to None if previous_page (nullable) is None
99
+ # and __fields_set__ contains the field
100
+ if self.previous_page is None and "previous_page" in self.__fields_set__:
101
+ _dict['previousPage'] = None
102
+
103
+ return _dict
104
+
105
+ @classmethod
106
+ def from_dict(cls, obj: dict) -> ResourceListOfInvestorRecord:
107
+ """Create an instance of ResourceListOfInvestorRecord from a dict"""
108
+ if obj is None:
109
+ return None
110
+
111
+ if not isinstance(obj, dict):
112
+ return ResourceListOfInvestorRecord.parse_obj(obj)
113
+
114
+ _obj = ResourceListOfInvestorRecord.parse_obj({
115
+ "values": [InvestorRecord.from_dict(_item) for _item in obj.get("values")] if obj.get("values") is not None else None,
116
+ "href": obj.get("href"),
117
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None,
118
+ "next_page": obj.get("nextPage"),
119
+ "previous_page": obj.get("previousPage")
120
+ })
121
+ return _obj
@@ -31,7 +31,8 @@ class TransactionQueryParameters(BaseModel):
31
31
  show_cancelled_transactions: Optional[StrictBool] = Field(None, alias="showCancelledTransactions", description="Option to specify whether or not to include cancelled transactions in the output. Defaults to False if not specified.")
32
32
  timeline_scope: Optional[StrictStr] = Field(None,alias="timelineScope", description="Scope of the Timeline for the Portfolio. The Timeline to be used while building transactions")
33
33
  timeline_code: Optional[StrictStr] = Field(None,alias="timelineCode", description="Code of the Timeline for the Portfolio. The Timeline to be used while building transactions")
34
- __properties = ["startDate", "endDate", "queryMode", "showCancelledTransactions", "timelineScope", "timelineCode"]
34
+ include_economics: Optional[StrictBool] = Field(None, alias="includeEconomics", description="By default is false. When set to true the Economics data would be populated in the response.")
35
+ __properties = ["startDate", "endDate", "queryMode", "showCancelledTransactions", "timelineScope", "timelineCode", "includeEconomics"]
35
36
 
36
37
  @validator('query_mode')
37
38
  def query_mode_validate_enum(cls, value):
@@ -154,6 +155,7 @@ class TransactionQueryParameters(BaseModel):
154
155
  "query_mode": obj.get("queryMode"),
155
156
  "show_cancelled_transactions": obj.get("showCancelledTransactions"),
156
157
  "timeline_scope": obj.get("timelineScope"),
157
- "timeline_code": obj.get("timelineCode")
158
+ "timeline_code": obj.get("timelineCode"),
159
+ "include_economics": obj.get("includeEconomics")
158
160
  })
159
161
  return _obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.804
3
+ Version: 2.1.806
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -329,8 +329,9 @@ Class | Method | HTTP request | Description
329
329
  *InstrumentsApi* | [**update_instrument_identifier**](docs/InstrumentsApi.md#update_instrument_identifier) | **POST** /api/instruments/{identifierType}/{identifier} | UpdateInstrumentIdentifier: Update instrument identifier
330
330
  *InstrumentsApi* | [**upsert_instruments**](docs/InstrumentsApi.md#upsert_instruments) | **POST** /api/instruments | UpsertInstruments: Upsert instruments
331
331
  *InstrumentsApi* | [**upsert_instruments_properties**](docs/InstrumentsApi.md#upsert_instruments_properties) | **POST** /api/instruments/$upsertproperties | UpsertInstrumentsProperties: Upsert instruments properties
332
- *InvestorRecordsApi* | [**delete_investor_record**](docs/InvestorRecordsApi.md#delete_investor_record) | **DELETE** /api/investorrecords/{idTypeScope}/{idTypeCode}/{code} | DeleteInvestorRecord: Delete Investor Record
332
+ *InvestorRecordsApi* | [**delete_investor_record**](docs/InvestorRecordsApi.md#delete_investor_record) | **DELETE** /api/investorrecords/{idTypeScope}/{idTypeCode}/{code} | [EARLY ACCESS] DeleteInvestorRecord: Delete Investor Record
333
333
  *InvestorRecordsApi* | [**get_investor_record**](docs/InvestorRecordsApi.md#get_investor_record) | **GET** /api/investorrecords/{idTypeScope}/{idTypeCode}/{code} | [EARLY ACCESS] GetInvestorRecord: Get Investor Record
334
+ *InvestorRecordsApi* | [**list_all_investor_records**](docs/InvestorRecordsApi.md#list_all_investor_records) | **GET** /api/investorrecords | [EARLY ACCESS] ListAllInvestorRecords: List Investor Records
334
335
  *InvestorRecordsApi* | [**upsert_investor_records**](docs/InvestorRecordsApi.md#upsert_investor_records) | **POST** /api/investorrecords/$batchUpsert | [EARLY ACCESS] UpsertInvestorRecords: Pluralised upsert of Investor Records
335
336
  *LegacyComplianceApi* | [**delete_legacy_compliance_rule**](docs/LegacyComplianceApi.md#delete_legacy_compliance_rule) | **DELETE** /api/legacy/compliance/rules/{scope}/{code} | [EXPERIMENTAL] DeleteLegacyComplianceRule: Deletes a compliance rule.
336
337
  *LegacyComplianceApi* | [**get_legacy_breached_orders_info**](docs/LegacyComplianceApi.md#get_legacy_breached_orders_info) | **GET** /api/legacy/compliance/runs/breached/{runId} | [EXPERIMENTAL] GetLegacyBreachedOrdersInfo: Get the Ids of Breached orders in a given compliance run and the corresponding list of rules that could have caused it.
@@ -766,6 +767,7 @@ Class | Method | HTTP request | Description
766
767
  - [BranchStep](docs/BranchStep.md)
767
768
  - [BranchStepRequest](docs/BranchStepRequest.md)
768
769
  - [BreakCodeSource](docs/BreakCodeSource.md)
770
+ - [Bucket](docs/Bucket.md)
769
771
  - [BucketedCashFlowRequest](docs/BucketedCashFlowRequest.md)
770
772
  - [BucketedCashFlowResponse](docs/BucketedCashFlowResponse.md)
771
773
  - [BucketingSchedule](docs/BucketingSchedule.md)
@@ -996,6 +998,7 @@ Class | Method | HTTP request | Description
996
998
  - [EconomicDependencyType](docs/EconomicDependencyType.md)
997
999
  - [EconomicDependencyWithComplexMarketData](docs/EconomicDependencyWithComplexMarketData.md)
998
1000
  - [EconomicDependencyWithQuote](docs/EconomicDependencyWithQuote.md)
1001
+ - [Economics](docs/Economics.md)
999
1002
  - [EffectiveRange](docs/EffectiveRange.md)
1000
1003
  - [ElectionSpecification](docs/ElectionSpecification.md)
1001
1004
  - [EligibilityCalculation](docs/EligibilityCalculation.md)
@@ -1566,6 +1569,7 @@ Class | Method | HTTP request | Description
1566
1569
  - [ResourceListOfInstrumentCashFlow](docs/ResourceListOfInstrumentCashFlow.md)
1567
1570
  - [ResourceListOfInstrumentEventHolder](docs/ResourceListOfInstrumentEventHolder.md)
1568
1571
  - [ResourceListOfInstrumentIdTypeDescriptor](docs/ResourceListOfInstrumentIdTypeDescriptor.md)
1572
+ - [ResourceListOfInvestorRecord](docs/ResourceListOfInvestorRecord.md)
1569
1573
  - [ResourceListOfLegalEntity](docs/ResourceListOfLegalEntity.md)
1570
1574
  - [ResourceListOfListComplexMarketDataWithMetaDataResponse](docs/ResourceListOfListComplexMarketDataWithMetaDataResponse.md)
1571
1575
  - [ResourceListOfMapping](docs/ResourceListOfMapping.md)
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=4Hw7NZgANwcliapBeQKw2nNcY00_gtLirIYETT5vJog,137886
1
+ lusid/__init__.py,sha256=p798jyuPeJVwvWUxgMm5YrdrIUGV-1Pa_KWtEhBaRTU,138124
2
2
  lusid/api/__init__.py,sha256=EQ3XKHP9QY2QeLD97_6ePDtx6g6tykdAzwWWHaW0dYo,6386
3
3
  lusid/api/abor_api.py,sha256=oAvtx9mQGWa5ZQRKjhzkJJH110GiIqiPIefIYNoiT14,166017
4
4
  lusid/api/abor_configuration_api.py,sha256=3Y3KwOOJqPsCsl7rfP-ScCYrKvVsQSP5adbsAsJ9G1s,74238
@@ -34,7 +34,7 @@ lusid/api/identifier_definitions_api.py,sha256=x79uhIBI0BJITjwmE7oPMWFOtox60FrrL
34
34
  lusid/api/instrument_event_types_api.py,sha256=RHuGNd8Xf8x0vyvAUFwRNgEB_kpzQTtbsBwlFC3QJcs,79862
35
35
  lusid/api/instrument_events_api.py,sha256=o_VlUMrovreM3P6N84W5jMUrZmc6tVsvD7Ckhf05sfw,57764
36
36
  lusid/api/instruments_api.py,sha256=-pOWq9bPcXvXULKV-FPWlRugZuBEPwVp2oPX91PEzTs,298533
37
- lusid/api/investor_records_api.py,sha256=Acz5CdJuLH9zKm2Iq5EitSJ42u-U6G2AOckD9EQvoFo,37860
37
+ lusid/api/investor_records_api.py,sha256=AFKyHa5kFyddjqXYtT7x3PUlQzLEbuxt4fuodVVmuCg,58633
38
38
  lusid/api/legacy_compliance_api.py,sha256=DvApZDZ-_yzZ72e9oqKBK7Ey8oEaavGtw5cgxhEkV0s,93819
39
39
  lusid/api/legal_entities_api.py,sha256=3rCwRIrEXwKH2T8-16ZizKx_Hyi8YeEfrZFpCJX5Hfs,257649
40
40
  lusid/api/order_graph_api.py,sha256=-oaauVeAJxJsK6AHscON1nODEDbv8dcXlKNb6ilBOAU,44022
@@ -76,7 +76,7 @@ lusid/api/translation_api.py,sha256=xpRuTfwQvYBlWe6r_L2EI_uVpXqHFnEOim-i-kVQ85E,
76
76
  lusid/api/workspace_api.py,sha256=0pCNi3ZCRbIo0NXKa85XE7vtq0WV5YOKcQKvFlcLUaY,120708
77
77
  lusid/api_client.py,sha256=ewMTmf9SRurY8pYnUx9jy24RdldPCOa4US38pnrVxjA,31140
78
78
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
79
- lusid/configuration.py,sha256=yf7GAJKd7a_Kd5OQXwuVS6WTsQEaEQYVuGZp6m8MuFc,17972
79
+ lusid/configuration.py,sha256=yLEviPYX2KBNA9VoSPZ-Y5CbHAO97yMOwd0Uo6rlu5w,17972
80
80
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
81
81
  lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
82
82
  lusid/extensions/api_client.py,sha256=GzygWg_h603QK1QS2HvAijuE2R1TnvoF6-Yg0CeM3ug,30943
@@ -91,7 +91,7 @@ lusid/extensions/rest.py,sha256=dp-bD_LMR2zAL1tmC3-urhWKLomXx7r5iGN1VteMBVQ,1601
91
91
  lusid/extensions/retry.py,sha256=EhW9OKJmGHipxN3H7eROH5DiMlAnfBVl95NQrttcsdg,14834
92
92
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
93
93
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
94
- lusid/models/__init__.py,sha256=bkzNNztWCCpvXe3su9Y9kJEZ9udnRBmXn9TVzPELhH4,130468
94
+ lusid/models/__init__.py,sha256=-mNYBDBp1XpfQBPr8hGCwKmJpUbxlVfhUAhSNtbbNO0,130706
95
95
  lusid/models/a2_b_breakdown.py,sha256=-FXgILrvtZXQDmvS0ARaJVGBq5LJ4AH-o3HjujFVmS4,3198
96
96
  lusid/models/a2_b_category.py,sha256=WunXUgx-dCnApPeLC8Qo5tVCX8Ywxkehib1vmNqNgNs,2957
97
97
  lusid/models/a2_b_data_record.py,sha256=qANTmV1_HUEo4l72-F8qzZjlQxOe0Onc9WPz7h-WWuY,9993
@@ -198,6 +198,7 @@ lusid/models/bool_list_compliance_parameter.py,sha256=BCbKh84VPQBh26pZIlhXhEznns
198
198
  lusid/models/branch_step.py,sha256=AaX3CSgsfqLKbJ65w4tsOszI9VO5IriZo5RjVdaZdQw,7161
199
199
  lusid/models/branch_step_request.py,sha256=xCYu1UMm-OF2In9zVjQbZ3WoTMlN5aJIWiPGb6U-qVw,6685
200
200
  lusid/models/break_code_source.py,sha256=6eGWx_Do3h18MrGN0CgX-amdrfL9n6lusdWyMmzLbiM,2384
201
+ lusid/models/bucket.py,sha256=1yLnFMTFHkbtI91UnczpMLcbabVC3ekF9mgfQQ1V1TE,5872
201
202
  lusid/models/bucketed_cash_flow_request.py,sha256=kLK-PFcbIihoiBWYO-c_e6mlL9T_Em1yUoNXbz0Hi2I,10289
202
203
  lusid/models/bucketed_cash_flow_response.py,sha256=DFdxnP1H8ymR-mETx3d0FTYBYQGplkRU28tEOPonESk,5866
203
204
  lusid/models/bucketing_schedule.py,sha256=NPKNhLsz5_trw048YicdQNLaBpSF7ocoQD2imLYhpPU,2348
@@ -236,8 +237,8 @@ lusid/models/cdx_credit_event.py,sha256=JYqFWigXH482RZ_vVTSsu9JAqJiWtzut3QHh2ZlV
236
237
  lusid/models/change.py,sha256=gt2vAck5JDScjVZI27AJUJl4PbXrorp3iXl29pKpyI8,5330
237
238
  lusid/models/change_history.py,sha256=UuF4fGRzB395PNnOcy02LAnbevC8qI6H7qbLPDit37w,7464
238
239
  lusid/models/change_history_action.py,sha256=LJipvCPce31vtmb4j7EQBaoolJVrf8wycx7lim33Kzg,702
239
- lusid/models/change_interval.py,sha256=_E7N6vktxAj0fj7y5LbXCdwg0zNB1qfMqjjLwXUqwQA,6410
240
- lusid/models/change_interval_with_order_management_detail.py,sha256=Vs06QY-CGtwmiiC8UT-cLN3nr9EOXc9fVPRorOgYOtU,7658
240
+ lusid/models/change_interval.py,sha256=rQidf0L457Kclf3U1A3yeVsFkdQJX3EHydow1SP2Hjk,6858
241
+ lusid/models/change_interval_with_order_management_detail.py,sha256=lQDNOJqFxy2_YRa0LPjvHqUrcQhABW3eGGtuhqiArNI,8106
241
242
  lusid/models/change_item.py,sha256=BcApB0DPFzb2BWm0h3US0thhntOOypBSEUHUEk1oYQc,4048
242
243
  lusid/models/chart_of_accounts.py,sha256=gMjWXbR5_-xljYujxYjPyvcZmD0UAOHaznOH_0UWZik,5661
243
244
  lusid/models/chart_of_accounts_properties.py,sha256=Hg6QRlKLW98Wn2WZ6bEVY93RQ-sT0W5edFEVK6AAfnY,4601
@@ -428,6 +429,7 @@ lusid/models/economic_dependency.py,sha256=HU1z1DuKPwiJcb4Ep8R8IoKOrb5ZuKUGWtRut
428
429
  lusid/models/economic_dependency_type.py,sha256=tx37PkXssBSTW8Rqm1PN8XFEKR4lEkTgnLwL0EvMh3k,1290
429
430
  lusid/models/economic_dependency_with_complex_market_data.py,sha256=szRO1DFJPRbsuwo5P6ovq7v8b7QViNVgWY7el7G36po,3283
430
431
  lusid/models/economic_dependency_with_quote.py,sha256=uOhpwpxlEK3tvjZi1W_lA24-isT_oUO4yDV24Wy6MUs,3590
432
+ lusid/models/economics.py,sha256=Q3LgYr3YzZIyLZfQLlkyf8bwCkkoGcgY5HM95bWuDHs,4739
431
433
  lusid/models/effective_range.py,sha256=QS0EvY8L0-kAuHo9I9RM4n--gbYIexnYSmtw2MPB_ts,2383
432
434
  lusid/models/election_specification.py,sha256=3VJre2H4qid96ZR5SXhXfPhvA5Oq_qqnN77I_LCmhHg,2434
433
435
  lusid/models/eligibility_calculation.py,sha256=97wEddIjii77XbgiFbEDj7W1J-t83eNMY_Vip_Qi2ZI,2558
@@ -676,15 +678,15 @@ lusid/models/mapping_rule.py,sha256=y6MqGlbd4XEY50xfwT9xQpFXOASxUrVyNOp0RiWZ_6E,
676
678
  lusid/models/mark_to_market_conventions.py,sha256=p7KJh6MPdI762O1zFyu05-wqca7odbIL4u_891fnfVo,2692
677
679
  lusid/models/market_context.py,sha256=N5ePFJA2G33zy1oGgWifd7V1UafKnQKqfEsQeXWa8X0,7828
678
680
  lusid/models/market_context_suppliers.py,sha256=Ew7wwO1kctTrgcz5iwnz3Otl8YXJQgBpjL3---pLHso,2751
679
- lusid/models/market_data_key_rule.py,sha256=hVOVfUsH7bO3PZRMfec0BEdo6xJYRKB4dOnoDN-WxxQ,13046
681
+ lusid/models/market_data_key_rule.py,sha256=WnTDRvEUhEXAV1KgjnyfFnrMbzE40nf8-7VywP3zD9A,13125
680
682
  lusid/models/market_data_options.py,sha256=FTcTycC2xaHfy5dzC4HHNzAvuIUIE6h1vaaPA1aIeTw,6831
681
683
  lusid/models/market_data_options_type.py,sha256=NlFpXuMw8cVK5czQY0h0GJhjYP_wpPuOIpin_AzXKwM,697
682
684
  lusid/models/market_data_overrides.py,sha256=iwTO6VDQEBHfqUYixnYiqVYsImN0EE4qrjEQkngrxLg,4153
683
- lusid/models/market_data_specific_rule.py,sha256=eKqzaXdY-C8uXz_cgjI3VpWTHveNlI7dR6Znk8Dt8DU,12056
685
+ lusid/models/market_data_specific_rule.py,sha256=LN5jBSJcUil0A4talEHd5NwqS4Jba52pMtye2BRz_io,12135
684
686
  lusid/models/market_data_type.py,sha256=4NyCfdwiQjP1MZK_SovXB6IVrspTU56JhmxfSdNRweU,1583
685
687
  lusid/models/market_observable_type.py,sha256=E1cl-6yHelmR1b7CarmYNgRHWxhPrFknNrXZlwYywAk,801
686
688
  lusid/models/market_options.py,sha256=bGW0MGm6cHG_BtGQ_ixI_C0ahr1AQq0rpv4oqiJYqxs,5250
687
- lusid/models/market_quote.py,sha256=0zqA0N2aUQL7wlze4dCtRFWIkSqffvleFJ0nqlfrDxQ,6570
689
+ lusid/models/market_quote.py,sha256=cKWzVco42O1x-vDPMQLUJ3lUDbBwLUqNHFiIcPo82Fo,6649
688
690
  lusid/models/mastered_instrument.py,sha256=ZBxWEgN0ULPkrCeX4481feXPcMKmMHvFVhuQMzYLPVE,11871
689
691
  lusid/models/match_criterion.py,sha256=iNh9Zv1-5wTq-WKHmHgyKn2xkU780noLtCJJq7aUjRw,6820
690
692
  lusid/models/maturity_event.py,sha256=0NbjTi2KVIDQyY0Fskiad_xzDR7qDa0FBWDM4NY4h9s,10477
@@ -752,7 +754,7 @@ lusid/models/order_request.py,sha256=vA90s8q8Y58x--4KpJJ6O5fWtoauOBBhusMdpherXDA
752
754
  lusid/models/order_set_request.py,sha256=b7FHKZWawLGR83gRHpShjtdYxvlvyMdLhQGLi2HTjmQ,2948
753
755
  lusid/models/order_update_request.py,sha256=eXPD9g6f-W5C42JGpNyOijrnPO7jmYERWNgXMfu46VU,5371
754
756
  lusid/models/otc_confirmation.py,sha256=05mvXvcPLgyCNIHXN7g9L5nqAZORKrQA_wHW-fHe2O0,2651
755
- lusid/models/output_transaction.py,sha256=G_YVh-B76LTQGlx8dLGAZbdditj7uwX7TxkIeVPho_8,21098
757
+ lusid/models/output_transaction.py,sha256=9icL7XvV2xlSnqqhISgf8H4pagX0wBml7xcxxwtPeLQ,21951
756
758
  lusid/models/output_transition.py,sha256=R_EGRE5yzpcgTth20s58MA5a3QVRA7ZvNtkxfAKtNCU,4219
757
759
  lusid/models/package.py,sha256=MjIyvz3UaXqJoS_0KiR6BKikHcBaJBV4iZYqo7AmslQ,5685
758
760
  lusid/models/package_request.py,sha256=4sYvxIYutClYd8qLoZxZW96XMZn5jeyhcfpsvyXZfek,4615
@@ -916,8 +918,8 @@ lusid/models/quote_access_metadata_rule_id.py,sha256=P0qZPdCTH1O8ZKwFIVG_lqV_xM-
916
918
  lusid/models/quote_dependency.py,sha256=OM9lo-nq1ytDmafBJ9P5d8TSPc3Z9A5FIdJA0nq08rg,7802
917
919
  lusid/models/quote_id.py,sha256=w0SLJOhCtOB9GM2eFKdjeYerX3efm017Q_0UkhMSHh4,2628
918
920
  lusid/models/quote_instrument_id_type.py,sha256=xLx1GjV_zFUIJcpw2JmCyWmzd9QR6S7ORFajcjtAHBw,886
919
- lusid/models/quote_series_id.py,sha256=y8anTghiWPqkgsMMbbqKXl-kw_SLOwRM13pkswIOnEo,12341
920
- lusid/models/quote_type.py,sha256=18LUYnfqUvhGJ0utX4QZIDjmZGXxHT1_3dooUPVi5OI,1088
921
+ lusid/models/quote_series_id.py,sha256=qZQBx0N4oYgQHVVdOLyAB8zxkwu5QSZrrwEHbrWxS-U,12420
922
+ lusid/models/quote_type.py,sha256=PcgNMkDIwcHRwNejD4cQOKdo-NQfRDXb1Cr25QQvAKY,1144
921
923
  lusid/models/raw_vendor_event.py,sha256=0zGWGBZlgLNygRZwnvkZiKIC00GiYLYCZquUWqYVkQQ,11248
922
924
  lusid/models/re_open_period_diary_entry_request.py,sha256=cbx4lBx2lCXSe2eaVTSMaDhWcPmBCg5WchApthismAc,2620
923
925
  lusid/models/realised_gain_loss.py,sha256=JG2_H7LIxOQFsKjSyLdHQzmbqWvXpsxbqm_qy70GE68,7400
@@ -998,6 +1000,7 @@ lusid/models/resource_list_of_i_unit_definition_dto.py,sha256=LjAYsbkiNd7IqusJ38
998
1000
  lusid/models/resource_list_of_instrument_cash_flow.py,sha256=M5myVdhSbr3DGzYQNeysXMqP1AnRhjqjwXBZDgFmWyI,4408
999
1001
  lusid/models/resource_list_of_instrument_event_holder.py,sha256=YTl-QFbe5zhYhcft0F0FiwZ1mmBHlhmVdoc8ITSzgkE,4444
1000
1002
  lusid/models/resource_list_of_instrument_id_type_descriptor.py,sha256=wvSt9-3hPMGxxewZMXB09xHtIWc9qpzUho1Saa5h6-c,4505
1003
+ lusid/models/resource_list_of_investor_record.py,sha256=BlYAemlwpa_s2fx35Y6P5-TUCimjawZY-ENiVJ4qqLM,4359
1001
1004
  lusid/models/resource_list_of_legal_entity.py,sha256=DrOUEHsXTuxTeZJ7d4Il4EjKe2fp7NTdmx81Xk-CrnM,4323
1002
1005
  lusid/models/resource_list_of_list_complex_market_data_with_meta_data_response.py,sha256=XRA9Fb5yJjj7FaNoWvfZuF6EPobEiXAKvob1d_GImqs,4689
1003
1006
  lusid/models/resource_list_of_mapping.py,sha256=_CdwA1OEdaeE75hTupxL1eVrJeFTKokx6s0-cKPXoL4,4274
@@ -1152,7 +1155,7 @@ lusid/models/transaction_property_map.py,sha256=-wHRWG3detIms7R03Z1LP8Ll_5h1OKtU
1152
1155
  lusid/models/transaction_property_mapping.py,sha256=zR68kn6GCZnWPxq9d0bof8-TnZj-jSrWfHGOrfN5kTo,3056
1153
1156
  lusid/models/transaction_property_mapping_request.py,sha256=1gRNyMZDfayaDSY5fp7nxTWFTMIjzabLIvfwxMk0BT8,3111
1154
1157
  lusid/models/transaction_query_mode.py,sha256=q3QNcFSP-LwfdQF_yRUOZMd6ElemQm03yOEQdQrCjvE,699
1155
- lusid/models/transaction_query_parameters.py,sha256=9c7HCPVkE77ctVzGAwJTKtmcrAROoPporSOU-dP1S2c,7555
1158
+ lusid/models/transaction_query_parameters.py,sha256=AIGQLau7ZeogFvvxFYnT94Di4tQPaW8GDbk9N_8y4Eo,7829
1156
1159
  lusid/models/transaction_reconciliation_request.py,sha256=0MtuzOqdGdToiO7tbffVR4drmNAR8Ygzcosqt4sECt4,4526
1157
1160
  lusid/models/transaction_reconciliation_request_v2.py,sha256=cgzBwUa3lIRYksf1xiKEN85iUHKp2_cEnFhHBlsvp-4,6178
1158
1161
  lusid/models/transaction_request.py,sha256=s6OVPLAxPDbUMU4gLN_XNX9ngdlKdPBgGeRDBg7QzdA,10982
@@ -1313,6 +1316,6 @@ lusid/models/year_month_day.py,sha256=gwSoxFwlD_wffKdddo1wfvAcLq3Cht3FHQidiaHzAA
1313
1316
  lusid/models/yield_curve_data.py,sha256=I1ZSWxHMgUxj9OQt6i9a4S91KB4_XtmrfFxpN_PV3YQ,9561
1314
1317
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1315
1318
  lusid/rest.py,sha256=HQT__5LQEMu6_1sLKvYj-DI4FH1DJXBIPYfZCTTyrY4,13431
1316
- lusid_sdk-2.1.804.dist-info/METADATA,sha256=2GZCcl57V_f1SvAzdGxEftaE2qZZRBQ5tLp6fQMGJKQ,220367
1317
- lusid_sdk-2.1.804.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1318
- lusid_sdk-2.1.804.dist-info/RECORD,,
1319
+ lusid_sdk-2.1.806.dist-info/METADATA,sha256=H6Zj0f0xhmJOhxYd2Hu6teak91CzzUVOtYs-lWvXDlc,220719
1320
+ lusid_sdk-2.1.806.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1321
+ lusid_sdk-2.1.806.dist-info/RECORD,,