diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 3a931a3a..2cfc59fb 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -1134,6 +1134,9 @@ docs/TravelRuleStatusEnum.md docs/TravelRuleTransactionBlockchainInfo.md docs/TravelRuleUpdateVASPDetails.md docs/TravelRuleVASP.md +docs/TravelRuleVASPExternalEntity.md +docs/TravelRuleVASPExternalEntityConfig.md +docs/TravelRuleVASPExternalEntityRegistration.md docs/TravelRuleValidateDateAndPlaceOfBirth.md docs/TravelRuleValidateFullTransactionRequest.md docs/TravelRuleValidateGeographicAddress.md @@ -2408,6 +2411,9 @@ fireblocks/models/travel_rule_validate_pii_ivms.py fireblocks/models/travel_rule_validate_transaction_request.py fireblocks/models/travel_rule_validate_transaction_response.py fireblocks/models/travel_rule_vasp.py +fireblocks/models/travel_rule_vasp_external_entity.py +fireblocks/models/travel_rule_vasp_external_entity_config.py +fireblocks/models/travel_rule_vasp_external_entity_registration.py fireblocks/models/travel_rule_vasp_for_vault.py fireblocks/models/travel_rule_verdict_enum.py fireblocks/models/trigger_validation_flow_response.py @@ -3660,6 +3666,9 @@ test/test_travel_rule_validate_pii_ivms.py test/test_travel_rule_validate_transaction_request.py test/test_travel_rule_validate_transaction_response.py test/test_travel_rule_vasp.py +test/test_travel_rule_vasp_external_entity.py +test/test_travel_rule_vasp_external_entity_config.py +test/test_travel_rule_vasp_external_entity_registration.py test/test_travel_rule_vasp_for_vault.py test/test_travel_rule_verdict_enum.py test/test_trigger_validation_flow_response.py diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 2bd66dd2..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,290 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v25.0.0](https://github.com/fireblocks/py-sdk/compare/v24.0.0...v25.0.0) - 2026-08-02 - -### Merged - -- Generated SDK #2725236398 [`#154`](https://github.com/fireblocks/py-sdk/pull/154) - -## [v24.0.0](https://github.com/fireblocks/py-sdk/compare/v23.0.0...v24.0.0) - 2026-07-23 - -### Merged - -- Generated SDK #2700459745 (major) [`#146`](https://github.com/fireblocks/py-sdk/pull/146) - -## [v23.0.0](https://github.com/fireblocks/py-sdk/compare/v22.0.0...v23.0.0) - 2026-07-01 - -### Merged - -- Generated SDK #1180 [`#145`](https://github.com/fireblocks/py-sdk/pull/145) - -## [v22.0.0](https://github.com/fireblocks/py-sdk/compare/v21.0.0...v22.0.0) - 2026-06-28 - -### Merged - -- Generated SDK #5347 [`#144`](https://github.com/fireblocks/py-sdk/pull/144) - -## [v21.0.0](https://github.com/fireblocks/py-sdk/compare/v20.0.0...v21.0.0) - 2026-06-11 - -### Merged - -- Generated SDK #5364 [`#142`](https://github.com/fireblocks/py-sdk/pull/142) - -## [v20.0.0](https://github.com/fireblocks/py-sdk/compare/v19.1.0...v20.0.0) - 2026-06-02 - -### Merged - -- Generated SDK #2839 (major) [`#141`](https://github.com/fireblocks/py-sdk/pull/141) - -## [v19.1.0](https://github.com/fireblocks/py-sdk/compare/v19.0.0...v19.1.0) - 2026-05-27 - -### Merged - -- Generated SDK #2710 (minor) [`#140`](https://github.com/fireblocks/py-sdk/pull/140) - -## [v19.0.0](https://github.com/fireblocks/py-sdk/compare/v18.0.0...v19.0.0) - 2026-05-17 - -### Merged - -- Generated SDK #7742 (major) [`#139`](https://github.com/fireblocks/py-sdk/pull/139) - -## [v18.0.0](https://github.com/fireblocks/py-sdk/compare/v17.0.0...v18.0.0) - 2026-05-07 - -### Merged - -- Generated SDK #3222 (major) [`#138`](https://github.com/fireblocks/py-sdk/pull/138) - -## [v17.0.0](https://github.com/fireblocks/py-sdk/compare/v16.0.0...v17.0.0) - 2026-04-20 - -### Merged - -- Generated SDK #9605 (major) [`#137`](https://github.com/fireblocks/py-sdk/pull/137) - -## [v16.0.0](https://github.com/fireblocks/py-sdk/compare/v15.0.0...v16.0.0) - 2026-04-06 - -### Merged - -- Generated SDK #3331 [`#135`](https://github.com/fireblocks/py-sdk/pull/135) - -## [v15.0.0](https://github.com/fireblocks/py-sdk/compare/v14.1.0...v15.0.0) - 2026-03-15 - -### Merged - -- Generated SDK #3733 (major) [`#129`](https://github.com/fireblocks/py-sdk/pull/129) - -## [v14.1.0](https://github.com/fireblocks/py-sdk/compare/v14.0.0...v14.1.0) - 2026-02-26 - -### Merged - -- Generated SDK #2167 [`#127`](https://github.com/fireblocks/py-sdk/pull/127) - -## [v14.0.0](https://github.com/fireblocks/py-sdk/compare/v13.0.0...v14.0.0) - 2026-02-03 - -### Merged - -- Generated SDK #4746 [`#123`](https://github.com/fireblocks/py-sdk/pull/123) - -## [v13.0.0](https://github.com/fireblocks/py-sdk/compare/v12.1.2...v13.0.0) - 2025-11-13 - -### Merged - -- Generated SDK #5834 [`#121`](https://github.com/fireblocks/py-sdk/pull/121) - -## [v12.1.2](https://github.com/fireblocks/py-sdk/compare/v12.1.1...v12.1.2) - 2025-10-22 - -### Merged - -- Generated SDK #8293 [`#120`](https://github.com/fireblocks/py-sdk/pull/120) - -## [v12.1.1](https://github.com/fireblocks/py-sdk/compare/v12.1.0...v12.1.1) - 2025-09-29 - -### Merged - -- Generated SDK #6061 [`#119`](https://github.com/fireblocks/py-sdk/pull/119) - -## [v12.1.0](https://github.com/fireblocks/py-sdk/compare/v12.0.0...v12.1.0) - 2025-09-09 - -### Merged - -- Generated SDK #4521 [`#118`](https://github.com/fireblocks/py-sdk/pull/118) - -## [v12.0.0](https://github.com/fireblocks/py-sdk/compare/v11.2.0...v12.0.0) - 2025-09-01 - -### Merged - -- Generated SDK #7741 [`#117`](https://github.com/fireblocks/py-sdk/pull/117) - -## [v11.2.0](https://github.com/fireblocks/py-sdk/compare/v11.1.0...v11.2.0) - 2025-08-18 - -### Merged - -- Generated SDK #3302 [`#116`](https://github.com/fireblocks/py-sdk/pull/116) - -## [v11.1.0](https://github.com/fireblocks/py-sdk/compare/v11.0.0...v11.1.0) - 2025-08-11 - -### Merged - -- Generated SDK #1782 [`#115`](https://github.com/fireblocks/py-sdk/pull/115) - -## [v11.0.0](https://github.com/fireblocks/py-sdk/compare/v10.4.0...v11.0.0) - 2025-07-15 - -### Merged - -- Generated SDK #5610 [`#114`](https://github.com/fireblocks/py-sdk/pull/114) - -## [v10.4.0](https://github.com/fireblocks/py-sdk/compare/v10.3.0...v10.4.0) - 2025-06-29 - -### Merged - -- Generated SDK #1492 [`#113`](https://github.com/fireblocks/py-sdk/pull/113) - -## [v10.3.0](https://github.com/fireblocks/py-sdk/compare/v10.2.0...v10.3.0) - 2025-06-18 - -### Merged - -- Generated SDK #4009 [`#112`](https://github.com/fireblocks/py-sdk/pull/112) - -## [v10.2.0](https://github.com/fireblocks/py-sdk/compare/v10.1.1...v10.2.0) - 2025-06-04 - -### Merged - -- Generated SDK #8912 [`#111`](https://github.com/fireblocks/py-sdk/pull/111) - -## [v10.1.1](https://github.com/fireblocks/py-sdk/compare/v10.1.0...v10.1.1) - 2025-05-18 - -### Merged - -- Generated SDK #5019 [`#110`](https://github.com/fireblocks/py-sdk/pull/110) - -## [v10.1.0](https://github.com/fireblocks/py-sdk/compare/v10.0.0...v10.1.0) - 2025-05-07 - -### Merged - -- Generated SDK #7076 [`#107`](https://github.com/fireblocks/py-sdk/pull/107) - -## [v10.0.0](https://github.com/fireblocks/py-sdk/compare/v9.0.1...v10.0.0) - 2025-04-20 - -### Merged - -- Generated SDK #4794 [`#105`](https://github.com/fireblocks/py-sdk/pull/105) - -## [v9.0.1](https://github.com/fireblocks/py-sdk/compare/v9.0.0...v9.0.1) - 2025-04-07 - -### Merged - -- Generated SDK #3065 [`#104`](https://github.com/fireblocks/py-sdk/pull/104) - -## [v9.0.0](https://github.com/fireblocks/py-sdk/compare/v8.0.0...v9.0.0) - 2025-03-27 - -### Merged - -- Generated SDK #619 [`#102`](https://github.com/fireblocks/py-sdk/pull/102) - -## [v8.0.0](https://github.com/fireblocks/py-sdk/compare/v7.1.0...v8.0.0) - 2025-03-17 - -### Merged - -- Generated SDK #645 [`#101`](https://github.com/fireblocks/py-sdk/pull/101) -- Generated SDK #726 [`#99`](https://github.com/fireblocks/py-sdk/pull/99) - -## [v7.1.0](https://github.com/fireblocks/py-sdk/compare/v7.0.1...v7.1.0) - 2025-02-25 - -### Merged - -- Generated SDK #9833 [`#96`](https://github.com/fireblocks/py-sdk/pull/96) - -## [v7.0.1](https://github.com/fireblocks/py-sdk/compare/v7.0.0...v7.0.1) - 2025-02-12 - -### Merged - -- Generated SDK #4262 [`#95`](https://github.com/fireblocks/py-sdk/pull/95) - -## [v7.0.0](https://github.com/fireblocks/py-sdk/compare/v6.0.0...v7.0.0) - 2025-02-02 - -### Merged - -- Generated SDK #538 [`#92`](https://github.com/fireblocks/py-sdk/pull/92) - -## [v6.0.0](https://github.com/fireblocks/py-sdk/compare/v5.0.0...v6.0.0) - 2025-01-08 - -### Merged - -- Generated SDK #8699 [`#89`](https://github.com/fireblocks/py-sdk/pull/89) - -## [v5.0.0](https://github.com/fireblocks/py-sdk/compare/v4.0.0...v5.0.0) - 2024-12-05 - -### Merged - -- Generated SDK #1430 [`#85`](https://github.com/fireblocks/py-sdk/pull/85) -- Update python-package.yml, deprecate macos-12 [`#86`](https://github.com/fireblocks/py-sdk/pull/86) - -## [v4.0.0](https://github.com/fireblocks/py-sdk/compare/v3.0.0...v4.0.0) - 2024-10-31 - -### Merged - -- Generated SDK #5184 [`#82`](https://github.com/fireblocks/py-sdk/pull/82) - -## [v3.0.0](https://github.com/fireblocks/py-sdk/compare/v2.1.0...v3.0.0) - 2024-09-17 - -### Merged - -- Generated SDK #237 [`#81`](https://github.com/fireblocks/py-sdk/pull/81) - -## [v2.1.0](https://github.com/fireblocks/py-sdk/compare/v2.0.0...v2.1.0) - 2024-07-25 - -### Merged - -- Generated SDK #6749 [`#78`](https://github.com/fireblocks/py-sdk/pull/78) - -## [v2.0.0](https://github.com/fireblocks/py-sdk/compare/v1.0.4...v2.0.0) - 2024-07-17 - -### Merged - -- Generated SDK #6152 [`#76`](https://github.com/fireblocks/py-sdk/pull/76) -- Generated SDK #7647 [`#73`](https://github.com/fireblocks/py-sdk/pull/73) -- Generated SDK #7984 [`#70`](https://github.com/fireblocks/py-sdk/pull/70) - -## [v1.0.4](https://github.com/fireblocks/py-sdk/compare/v1.0.3...v1.0.4) - 2024-06-26 - -### Merged - -- Generated SDK #5779 [`#69`](https://github.com/fireblocks/py-sdk/pull/69) -- Generated SDK #913 [`#68`](https://github.com/fireblocks/py-sdk/pull/68) -- Generated SDK #1353 [`#67`](https://github.com/fireblocks/py-sdk/pull/67) -- Generated SDK #9982 [`#66`](https://github.com/fireblocks/py-sdk/pull/66) -- Generated SDK #1362 [`#65`](https://github.com/fireblocks/py-sdk/pull/65) -- Generated SDK #3652 [`#64`](https://github.com/fireblocks/py-sdk/pull/64) - -## [v1.0.3](https://github.com/fireblocks/py-sdk/compare/v1.0.2...v1.0.3) - 2024-06-06 - -### Merged - -- Generated SDK #2648 [`#30`](https://github.com/fireblocks/py-sdk/pull/30) - -## [v1.0.2](https://github.com/fireblocks/py-sdk/compare/v0.0.2-beta...v1.0.2) - 2024-06-04 - -### Merged - -- version 1.0.2 [`#25`](https://github.com/fireblocks/py-sdk/pull/25) -- version 1.0.0 [`#24`](https://github.com/fireblocks/py-sdk/pull/24) - -## v0.0.2-beta - 2024-05-30 - -### Merged - -- version 0.0.2-beta [`#23`](https://github.com/fireblocks/py-sdk/pull/23) -- Update .bumpversion.cfg [`#14`](https://github.com/fireblocks/py-sdk/pull/14) -- Update setup.py [`#13`](https://github.com/fireblocks/py-sdk/pull/13) -- Bug Fixes [`#12`](https://github.com/fireblocks/py-sdk/pull/12) -- update support for beta in bumpversion [`#11`](https://github.com/fireblocks/py-sdk/pull/11) -- Update setup.py [`#10`](https://github.com/fireblocks/py-sdk/pull/10) -- Update setup.py [`#9`](https://github.com/fireblocks/py-sdk/pull/9) -- Added Idempotency & NCW headers support [`#7`](https://github.com/fireblocks/py-sdk/pull/7) -- Added Idempotency & NCW headers support [`#8`](https://github.com/fireblocks/py-sdk/pull/8) -- Update setup.py [`#5`](https://github.com/fireblocks/py-sdk/pull/5) -- API Support Updates [`#4`](https://github.com/fireblocks/py-sdk/pull/4) diff --git a/README.md b/README.md index c487ccca..556e4960 100644 --- a/README.md +++ b/README.md @@ -1778,6 +1778,9 @@ Class | Method | HTTP request | Description - [TravelRuleTransactionBlockchainInfo](docs/TravelRuleTransactionBlockchainInfo.md) - [TravelRuleUpdateVASPDetails](docs/TravelRuleUpdateVASPDetails.md) - [TravelRuleVASP](docs/TravelRuleVASP.md) + - [TravelRuleVASPExternalEntity](docs/TravelRuleVASPExternalEntity.md) + - [TravelRuleVASPExternalEntityConfig](docs/TravelRuleVASPExternalEntityConfig.md) + - [TravelRuleVASPExternalEntityRegistration](docs/TravelRuleVASPExternalEntityRegistration.md) - [TravelRuleValidateDateAndPlaceOfBirth](docs/TravelRuleValidateDateAndPlaceOfBirth.md) - [TravelRuleValidateFullTransactionRequest](docs/TravelRuleValidateFullTransactionRequest.md) - [TravelRuleValidateGeographicAddress](docs/TravelRuleValidateGeographicAddress.md) diff --git a/docs/ContractAttributes.md b/docs/ContractAttributes.md index 3eaedb83..edee69cc 100644 --- a/docs/ContractAttributes.md +++ b/docs/ContractAttributes.md @@ -5,9 +5,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**use_cases** | **List[str]** | | -**standards** | **List[str]** | | -**auditor** | [**AuditorData**](AuditorData.md) | | +**use_cases** | **List[str]** | | [optional] +**standards** | **List[str]** | Token standards implemented by the contract (e.g. ERC-20, ERC-1400). Not returned for templates that do not follow ERC token standards, such as non-EVM templates (e.g. Stellar, Solana Token 2022) | [optional] +**auditor** | [**AuditorData**](AuditorData.md) | | [optional] ## Example diff --git a/docs/TravelRuleApi.md b/docs/TravelRuleApi.md index 5903f013..9a75f58a 100644 --- a/docs/TravelRuleApi.md +++ b/docs/TravelRuleApi.md @@ -248,6 +248,8 @@ Get VASP Details. Returns information about a VASP that has the specified DID. +The response may contain fields that are not documented in the schema below. Clients must ignore unrecognised fields rather than failing to deserialize. + ### Example @@ -273,8 +275,8 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: - did = 'did_example' # str | - fields = ['fields_example'] # List[str] | A CSV of fields to return. Choose from the following options: (optional) + did = 'did:ethr:0x17fe2dd11a2daa7f6c1fdf22532a4763f963aea6' # str | The Decentralized Identifier (DID) of the VASP. + fields = ['fields_example'] # List[str] | The VASP fields to return. Optional. If omitted, or supplied with an empty value, the complete VASP record is returned, which is the same as passing `all`. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. (optional) try: # Get VASP details @@ -292,8 +294,8 @@ with Fireblocks(configuration) as fireblocks: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **did** | **str**| | - **fields** | [**List[str]**](str.md)| A CSV of fields to return. Choose from the following options: | [optional] + **did** | **str**| The Decentralized Identifier (DID) of the VASP. | + **fields** | [**List[str]**](str.md)| The VASP fields to return. Optional. If omitted, or supplied with an empty value, the complete VASP record is returned, which is the same as passing `all`. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. | [optional] ### Return type @@ -312,7 +314,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Transaction validated successfully | - | +**200** | VASP details | - | **400** | Invalid request body | - | **500** | Internal server error | - | @@ -327,6 +329,8 @@ Get All VASPs. Returns a list of VASPs. VASPs can be searched and sorted. +Each VASP in the response may contain fields that are not documented in the schema below. Clients must ignore unrecognised fields rather than failing to deserialize. + ### Example @@ -354,7 +358,7 @@ configuration = ClientConfiguration( with Fireblocks(configuration) as fireblocks: order = 'ASC' # str | Field to order by (optional) page_size = 500 # float | Records per page (optional) (default to 500) - fields = ['fields_example'] # List[str] | CSV of fields to return (all, \"blank\" or see list of all field names below) (optional) + fields = ['fields_example'] # List[str] | The VASP fields to return. Optional. If omitted, each VASP is returned with a default subset of six fields: `did`, `name`, `website`, `logo`, `incorporationCountry` and `jurisdictions`. Pass `all` to return the complete record for each VASP. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. (optional) search = 'Fireblocks' # str | Search query (optional) review_value = 'TRUSTED' # str | Filter by the VASP's review status. Possible values include: \"TRUSTED\", \"BLOCKED\", \"MANUAL\", or \"NULL\". When provided, only VASPs that match the specified reviewValue will be returned (i.e., VASPs that have already been reviewed to this status). (optional) page_cursor = '100' # str | Cursor for pagination. When provided, the response will include the next page of results. (optional) @@ -377,7 +381,7 @@ Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **order** | **str**| Field to order by | [optional] **page_size** | **float**| Records per page | [optional] [default to 500] - **fields** | [**List[str]**](str.md)| CSV of fields to return (all, \"blank\" or see list of all field names below) | [optional] + **fields** | [**List[str]**](str.md)| The VASP fields to return. Optional. If omitted, each VASP is returned with a default subset of six fields: `did`, `name`, `website`, `logo`, `incorporationCountry` and `jurisdictions`. Pass `all` to return the complete record for each VASP. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. | [optional] **search** | **str**| Search query | [optional] **review_value** | **str**| Filter by the VASP's review status. Possible values include: \"TRUSTED\", \"BLOCKED\", \"MANUAL\", or \"NULL\". When provided, only VASPs that match the specified reviewValue will be returned (i.e., VASPs that have already been reviewed to this status). | [optional] **page_cursor** | **str**| Cursor for pagination. When provided, the response will include the next page of results. | [optional] diff --git a/docs/TravelRuleIssuer.md b/docs/TravelRuleIssuer.md index c351ba7f..116041cc 100644 --- a/docs/TravelRuleIssuer.md +++ b/docs/TravelRuleIssuer.md @@ -1,11 +1,14 @@ # TravelRuleIssuer +An attestation of a single VASP attribute by an issuing party. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**issuer_did** | **str** | | +**issuer_did** | **str** | The Decentralized Identifier (DID) of the party that issued the attestation. | +**issued_date** | **str** | Timestamp when the attestation was issued. Present on every attestation observed to date, but not guaranteed, so treat it as optional. | [optional] +**issuer_name** | **str** | The human-readable name of the issuing party. Returned only for issuers that publish a name, such as GLEIF; absent for others, including in the same response. | [optional] ## Example diff --git a/docs/TravelRuleVASP.md b/docs/TravelRuleVASP.md index 818540b2..3c0e5164 100644 --- a/docs/TravelRuleVASP.md +++ b/docs/TravelRuleVASP.md @@ -1,5 +1,6 @@ # TravelRuleVASP +A VASP record from the Travel Rule trust framework directory. The set of keys returned depends on the `fields` query parameter. When `fields` is omitted, or supplied with an empty value, this endpoint returns the complete record. Additional fields may be present in the response beyond those documented here. Clients must ignore unrecognised fields rather than failing to deserialize. ## Properties @@ -9,48 +10,83 @@ Name | Type | Description | Notes **name** | **str** | The name of the VASP. | **verification_status** | **str** | The current verification status of the VASP. | **address_line1** | **str** | The first line of the VASP's address. | -**address_line2** | **str** | The second line of the VASP's address (if applicable). | [optional] +**address_line2** | **str** | The second line of the VASP's address (if applicable). May be null. | [optional] **city** | **str** | The city where the VASP is located. | **country** | **str** | The country where the VASP is registered (ISO-3166 Alpha-2 code). | -**email_domains** | **str** | Comma-separated list of email domains associated with the VASP. | +**email_domains** | **str** | The email domains associated with the VASP. The field's type is string; its content is a JSON-encoded array of domains. Clients must parse this value to obtain the array. | **website** | **str** | The official website of the VASP. | -**logo** | **str** | URL to the logo of the VASP. | [optional] +**logo** | **str** | URL to the logo of the VASP. May be null. | [optional] **legal_structure** | **str** | The legal structure of the VASP (e.g., Corporation, LLC). | **legal_name** | **str** | The legal name of the VASP. | -**year_founded** | **str** | The year the VASP was founded. | +**year_founded** | **str** | The year the VASP was founded. Returned as a string, not an integer. | **incorporation_country** | **str** | The country where the VASP is incorporated (ISO-3166 Alpha-2 code). | **is_regulated** | **str** | Indicates whether the VASP is regulated. | -**other_names** | **str** | Other names the VASP is known by. | [optional] +**other_names** | **str** | Other names the VASP is known by. May be null. | [optional] **identification_type** | **str** | The type of identification used by the VASP. | [optional] -**identification_country** | **str** | The country of identification for the VASP (ISO-3166 Alpha-2 code). | [optional] +**identification_country** | **str** | The country of identification for the VASP (ISO-3166 Alpha-2 code). May be null. | [optional] **business_number** | **str** | The business registration number of the VASP. | [optional] -**regulatory_authorities** | **str** | The regulatory authorities overseeing the VASP. | [optional] +**regulatory_authorities** | **str** | The regulatory authorities overseeing the VASP. May be null. | [optional] **jurisdictions** | **str** | The jurisdictions where the VASP operates. | -**street** | **str** | The street name where the VASP is located. | [optional] -**number** | **str** | The building number of the VASP's address. | [optional] -**unit** | **str** | The unit or suite number of the VASP's address. | [optional] +**division** | **str** | The division of the VASP's registered address, where applicable. | [optional] +**street** | **str** | The street name where the VASP is located. May be null. | [optional] +**number** | **str** | The building number of the VASP's address. May be returned as an empty string when not supplied. | [optional] +**unit** | **str** | The unit or suite number of the VASP's address. May be null. | [optional] **post_code** | **str** | The postal code of the VASP's location. | [optional] **state** | **str** | The state or region where the VASP is located. | [optional] -**certificates** | **str** | Certificates or licenses held by the VASP. | [optional] -**description** | **str** | A brief description of the VASP. | [optional] -**travel_rule_openvasp** | **str** | Travel rule compliance status for OpenVASP. | [optional] -**travel_rule_sygna** | **str** | Travel rule compliance status for Sygna. | [optional] -**travel_rule_trisa** | **str** | Travel rule compliance status for TRISA. | [optional] +**other_legal_name** | **str** | Alternative legal names of the VASP, as a comma-separated list. Resolved from an external registry, so it is only populated for VASPs with a resolved entity record. | [optional] +**gleif_updated_at** | **str** | Timestamp of the last synchronization with the GLEIF registry. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**lei_number** | **str** | The VASP's Legal Entity Identifier (LEI), a 20-character alphanumeric code. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**legal_form** | **str** | The GLEIF Entity Legal Form (ELF) code of the VASP. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**entity_category** | **str** | The GLEIF entity category of the VASP. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**entity_status** | **str** | The GLEIF entity status of the VASP. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**external_entity_config** | [**List[TravelRuleVASPExternalEntityConfig]**](TravelRuleVASPExternalEntityConfig.md) | Entity records resolved from external registries, such as GLEIF. Only populated for VASPs that have been resolved against at least one external registry. | [optional] +**hq_street** | **str** | The street of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**hq_number** | **str** | The building number of the VASP's headquarters address. May be returned as an empty string as well as `null` when not supplied. | [optional] +**hq_postcode** | **str** | The postal code of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**hq_region** | **str** | The region of the VASP's headquarters address, as an ISO-3166-2 subdivision code. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**hq_city** | **str** | The city of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**hq_country** | **str** | The country of the VASP's headquarters address (ISO-3166 Alpha-2 code). Only populated for VASPs with a GLEIF-resolved LEI. | [optional] +**certificates** | **str** | Certificates or licenses held by the VASP. May be null. | [optional] +**description** | **str** | A brief description of the VASP. May be null. | [optional] +**travel_rule_openvasp** | **str** | Travel rule compliance status for OpenVASP. Null when the VASP does not support this protocol. | [optional] +**travel_rule_sygna** | **str** | Travel rule compliance status for Sygna. Null when the VASP does not support this protocol. | [optional] +**travel_rule_trisa** | **str** | Travel rule compliance status for TRISA. Null when the VASP does not support this protocol. | [optional] **travel_rule_trlight** | **str** | Travel rule compliance status for TRLight. | -**travel_rule_email** | **str** | Travel rule compliance status for EMAIL. | [optional] -**travel_rule_trp** | **str** | Travel rule compliance status for TRP. | [optional] -**travel_rule_shyft** | **str** | Travel rule compliance status for Shyft. | [optional] -**travel_rule_ustravelrulewg** | **str** | Travel rule compliance status for US Travel Rule WG. | [optional] +**travel_rule_email** | **str** | Travel rule compliance status for EMAIL. Null when the VASP does not support this protocol. | [optional] +**travel_rule_trp** | **str** | Travel rule compliance status for TRP. Null when the VASP does not support this protocol. | [optional] +**travel_rule_shyft** | **str** | Travel rule compliance status for Shyft. Null when the VASP does not support this protocol. | [optional] +**travel_rule_ustravelrulewg** | **str** | Travel rule compliance status for US Travel Rule WG. Null when the VASP does not support this protocol. | [optional] **created_at** | **str** | Timestamp when the VASP record was created. | -**created_by** | **str** | User or system that created the VASP record. | [optional] +**created_by** | **str** | The DID of the party that created the VASP record. May be null. | [optional] **updated_at** | **str** | Timestamp of the last update to the VASP record. | [optional] -**updated_by** | **str** | User or system that last updated the VASP record. | [optional] +**updated_by** | **str** | The DID of the party that last updated the VASP record. | [optional] **last_sent_date** | **str** | The last date a transaction was sent by the VASP. | [optional] **last_received_date** | **str** | The last date a transaction was received by the VASP. | [optional] -**documents** | **str** | Documents associated with the VASP. | [optional] +**documents** | **str** | Documents associated with the VASP. May be null. | [optional] **has_admin** | **bool** | Indicates if the VASP has an admin. | **is_notifiable** | **bool** | Indicates if the VASP is notifiable for compliance reasons. | **issuers** | [**TravelRuleIssuers**](TravelRuleIssuers.md) | | +**regulatory_status** | **str** | The regulatory status of the VASP, as free text. | [optional] +**supervisory_authority** | **str** | The supervisory authority responsible for the VASP. | [optional] +**registration_license_id** | **str** | The identifier of the VASP's registration or operating license. | [optional] +**status_start_date** | **str** | The date the VASP's current regulatory status took effect. | [optional] +**status_expiration_date** | **str** | The date the VASP's current regulatory status expires. | [optional] +**last_checked** | **str** | Timestamp of the last verification of the VASP's regulatory status. | [optional] +**additional_information** | **str** | Additional free-text information about the VASP. | [optional] +**subsidiary_of** | **str** | The DID of the parent VASP, when this VASP is a subsidiary of another. | [optional] +**pii_didkey** | **str** | The VASP's public PII encryption key, published in the trust framework directory. Use it to encrypt IVMS101 personally identifiable information addressed to this VASP. | [optional] +**compliance_phase** | **int** | The VASP's current compliance onboarding phase. | [optional] +**compliance_phase_data** | **Dict[str, bool]** | The VASP's progress through the Travel Rule compliance onboarding milestones, as a map keyed by milestone code. Each value indicates whether that milestone has been completed. The set of milestone codes is defined by the Travel Rule provider and may change over time, so clients must not assume any particular key is present. Examples of milestone codes include `TX_SENT`, `TX_NOTIFY_API`, `TF_VASP_VERIFIED`, `RULES_CUSTOM_INCOMING` and `INTEGRATIONS_WIDGET`. | [optional] +**vaspnet_id** | **str** | The VASP's VASPnet identifier. | [optional] +**vaspnet_updated_at** | **str** | Timestamp of the last synchronization with VASPnet. | [optional] +**vaspnet_immutable_fields** | **List[str]** | Names of the fields that are managed by VASPnet and cannot be modified locally. Empty when no fields are locked. | [optional] +**node_didkey** | **str** | The public key of the Travel Rule node serving this VASP record. The format has not been confirmed against a live response; every observed value has been null. | [optional] +**ddq** | **str** | The VASP's Due Diligence Questionnaire, as a JSON-encoded string containing a `data` object and an `updatedAt` timestamp. Clients must parse this value. | [optional] +**target_protocol** | **str** | The Travel Rule protocol used to reach this VASP, when a specific one is configured. | [optional] +**parent_gateway** | **str** | The DID of the gateway VASP that routes messages on this VASP's behalf. | [optional] +**is_active_sender** | **bool** | Indicates if the VASP actively sends Travel Rule transfers. | [optional] +**is_active_receiver** | **bool** | Indicates if the VASP actively receives Travel Rule transfers. | [optional] +**subsidiaries** | **List[object]** | The VASP's subsidiary entities. The element schema is not yet documented, as no response containing a populated value has been observed; do not assume a particular element type. | [optional] ## Example diff --git a/docs/TravelRuleVASPExternalEntity.md b/docs/TravelRuleVASPExternalEntity.md new file mode 100644 index 00000000..56389bcc --- /dev/null +++ b/docs/TravelRuleVASPExternalEntity.md @@ -0,0 +1,50 @@ +# TravelRuleVASPExternalEntity + +The VASP's entity data as held by an external registry. These fields mirror a subset of the top-level VASP fields, but carry the registry's values rather than the VASP's own, so the two may differ. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**legal_name** | **str** | The legal name of the entity as recorded by the external registry. | [optional] +**other_legal_name** | **str** | Alternative legal names of the entity, as a comma-separated list. | [optional] +**legal_form** | **str** | The Entity Legal Form (ELF) code of the entity. | [optional] +**legal_structure** | **str** | The legal structure of the entity. The external registry may return the Entity Legal Form code in this field, so its value can duplicate `legalForm`. | [optional] +**entity_category** | **str** | The category assigned to the entity by the external registry. | [optional] +**entity_status** | **str** | The status of the entity at the external registry. | [optional] +**business_number** | **str** | The business registration number of the entity. | [optional] +**year_founded** | **str** | The year the entity was founded. Returned as a string, not an integer. | [optional] +**jurisdictions** | **str** | The jurisdictions the entity is registered in. | [optional] +**address_line1** | **str** | The first line of the entity's registered address. | [optional] +**number** | **str** | The building number of the entity's registered address. May be returned as an empty string as well as `null` when not supplied. | [optional] +**post_code** | **str** | The postal code of the entity's registered address. | [optional] +**city** | **str** | The city of the entity's registered address. | [optional] +**state** | **str** | The state or region of the entity's registered address, as an ISO-3166-2 subdivision code. | [optional] +**country** | **str** | The country of the entity's registered address (ISO-3166 Alpha-2 code). | [optional] +**hq_street** | **str** | The street of the entity's headquarters address. | [optional] +**hq_number** | **str** | The building number of the entity's headquarters address. May be returned as an empty string as well as `null` when not supplied. | [optional] +**hq_postcode** | **str** | The postal code of the entity's headquarters address. | [optional] +**hq_city** | **str** | The city of the entity's headquarters address. | [optional] +**hq_region** | **str** | The region of the entity's headquarters address, as an ISO-3166-2 subdivision code. | [optional] +**hq_country** | **str** | The country of the entity's headquarters address (ISO-3166 Alpha-2 code). | [optional] + +## Example + +```python +from fireblocks.models.travel_rule_vasp_external_entity import TravelRuleVASPExternalEntity + +# TODO update the JSON string below +json = "{}" +# create an instance of TravelRuleVASPExternalEntity from a JSON string +travel_rule_vasp_external_entity_instance = TravelRuleVASPExternalEntity.from_json(json) +# print the JSON string representation of the object +print(TravelRuleVASPExternalEntity.to_json()) + +# convert the object into a dict +travel_rule_vasp_external_entity_dict = travel_rule_vasp_external_entity_instance.to_dict() +# create an instance of TravelRuleVASPExternalEntity from a dict +travel_rule_vasp_external_entity_from_dict = TravelRuleVASPExternalEntity.from_dict(travel_rule_vasp_external_entity_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TravelRuleVASPExternalEntityConfig.md b/docs/TravelRuleVASPExternalEntityConfig.md new file mode 100644 index 00000000..d5e4aa3e --- /dev/null +++ b/docs/TravelRuleVASPExternalEntityConfig.md @@ -0,0 +1,35 @@ +# TravelRuleVASPExternalEntityConfig + +An entity record for the VASP as resolved from an external registry, together with the registration state reported by that registry. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**provider** | **str** | The external registry the record was resolved from. Returned in lower case, for example `gleif`. | [optional] +**external_id** | **str** | The VASP's identifier within the external registry. For the `gleif` provider this is the Legal Entity Identifier (LEI). | [optional] +**updated_at** | **str** | Timestamp of the last change to the record at the external registry. | [optional] +**resolved_at** | **str** | Timestamp when the record was last resolved from the external registry. | [optional] +**entity** | [**TravelRuleVASPExternalEntity**](TravelRuleVASPExternalEntity.md) | | [optional] +**registration** | [**TravelRuleVASPExternalEntityRegistration**](TravelRuleVASPExternalEntityRegistration.md) | | [optional] + +## Example + +```python +from fireblocks.models.travel_rule_vasp_external_entity_config import TravelRuleVASPExternalEntityConfig + +# TODO update the JSON string below +json = "{}" +# create an instance of TravelRuleVASPExternalEntityConfig from a JSON string +travel_rule_vasp_external_entity_config_instance = TravelRuleVASPExternalEntityConfig.from_json(json) +# print the JSON string representation of the object +print(TravelRuleVASPExternalEntityConfig.to_json()) + +# convert the object into a dict +travel_rule_vasp_external_entity_config_dict = travel_rule_vasp_external_entity_config_instance.to_dict() +# create an instance of TravelRuleVASPExternalEntityConfig from a dict +travel_rule_vasp_external_entity_config_from_dict = TravelRuleVASPExternalEntityConfig.from_dict(travel_rule_vasp_external_entity_config_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TravelRuleVASPExternalEntityRegistration.md b/docs/TravelRuleVASPExternalEntityRegistration.md new file mode 100644 index 00000000..7eb74c56 --- /dev/null +++ b/docs/TravelRuleVASPExternalEntityRegistration.md @@ -0,0 +1,32 @@ +# TravelRuleVASPExternalEntityRegistration + +The registration state of the VASP as reported by an external registry. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | The registration status at the external registry, for example `ISSUED`, `LAPSED` or `RETIRED`. The value set is defined by the registry, not by Fireblocks. | [optional] +**next_renewal_date** | **str** | The date the registration is next due for renewal at the external registry. | [optional] +**corroboration_level** | **str** | The level to which the registry has corroborated the entity data, for example `FULLY_CORROBORATED`. The value set is defined by the registry, not by Fireblocks. | [optional] + +## Example + +```python +from fireblocks.models.travel_rule_vasp_external_entity_registration import TravelRuleVASPExternalEntityRegistration + +# TODO update the JSON string below +json = "{}" +# create an instance of TravelRuleVASPExternalEntityRegistration from a JSON string +travel_rule_vasp_external_entity_registration_instance = TravelRuleVASPExternalEntityRegistration.from_json(json) +# print the JSON string representation of the object +print(TravelRuleVASPExternalEntityRegistration.to_json()) + +# convert the object into a dict +travel_rule_vasp_external_entity_registration_dict = travel_rule_vasp_external_entity_registration_instance.to_dict() +# create an instance of TravelRuleVASPExternalEntityRegistration from a dict +travel_rule_vasp_external_entity_registration_from_dict = TravelRuleVASPExternalEntityRegistration.from_dict(travel_rule_vasp_external_entity_registration_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/fireblocks/__init__.py b/fireblocks/__init__.py index 6a19bdeb..c157e42a 100644 --- a/fireblocks/__init__.py +++ b/fireblocks/__init__.py @@ -14,7 +14,7 @@ Do not edit the class manually. """ # noqa: E501 -__version__ = "25.0.0" +__version__ = "0.0.0" # import apis into sdk package from fireblocks.api.api_user_api import ApiUserApi @@ -1756,6 +1756,15 @@ TravelRuleUpdateVASPDetails, ) from fireblocks.models.travel_rule_vasp import TravelRuleVASP +from fireblocks.models.travel_rule_vasp_external_entity import ( + TravelRuleVASPExternalEntity, +) +from fireblocks.models.travel_rule_vasp_external_entity_config import ( + TravelRuleVASPExternalEntityConfig, +) +from fireblocks.models.travel_rule_vasp_external_entity_registration import ( + TravelRuleVASPExternalEntityRegistration, +) from fireblocks.models.travel_rule_validate_date_and_place_of_birth import ( TravelRuleValidateDateAndPlaceOfBirth, ) diff --git a/fireblocks/api/travel_rule_api.py b/fireblocks/api/travel_rule_api.py index c3cb6ac1..64eba0ed 100644 --- a/fireblocks/api/travel_rule_api.py +++ b/fireblocks/api/travel_rule_api.py @@ -459,8 +459,8 @@ def _get_vasp_for_vault_serialize( @validate_call def get_vaspby_did( self, - did: StrictStr, - fields: Annotated[Optional[List[StrictStr]], Field(description="A CSV of fields to return. Choose from the following options:")] = None, + did: Annotated[StrictStr, Field(description="The Decentralized Identifier (DID) of the VASP.")], + fields: Annotated[Optional[List[StrictStr]], Field(description="The VASP fields to return. Optional. If omitted, or supplied with an empty value, the complete VASP record is returned, which is the same as passing `all`. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -476,11 +476,11 @@ def get_vaspby_did( ) -> Future[ApiResponse[TravelRuleVASP]]: """Get VASP details - Get VASP Details. Returns information about a VASP that has the specified DID. + Get VASP Details. Returns information about a VASP that has the specified DID. The response may contain fields that are not documented in the schema below. Clients must ignore unrecognised fields rather than failing to deserialize. - :param did: (required) + :param did: The Decentralized Identifier (DID) of the VASP. (required) :type did: str - :param fields: A CSV of fields to return. Choose from the following options: + :param fields: The VASP fields to return. Optional. If omitted, or supplied with an empty value, the complete VASP record is returned, which is the same as passing `all`. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. :type fields: List[str] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -601,7 +601,7 @@ def get_vasps( self, order: Annotated[Optional[StrictStr], Field(description="Field to order by")] = None, page_size: Annotated[Optional[Union[Annotated[float, Field(le=1000, strict=True, ge=100)], Annotated[int, Field(le=1000, strict=True, ge=100)]]], Field(description="Records per page")] = None, - fields: Annotated[Optional[List[StrictStr]], Field(description="CSV of fields to return (all, \"blank\" or see list of all field names below)")] = None, + fields: Annotated[Optional[List[StrictStr]], Field(description="The VASP fields to return. Optional. If omitted, each VASP is returned with a default subset of six fields: `did`, `name`, `website`, `logo`, `incorporationCountry` and `jurisdictions`. Pass `all` to return the complete record for each VASP. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error.")] = None, search: Annotated[Optional[StrictStr], Field(description="Search query")] = None, review_value: Annotated[Optional[StrictStr], Field(description="Filter by the VASP's review status. Possible values include: \"TRUSTED\", \"BLOCKED\", \"MANUAL\", or \"NULL\". When provided, only VASPs that match the specified reviewValue will be returned (i.e., VASPs that have already been reviewed to this status).")] = None, page_cursor: Annotated[Optional[StrictStr], Field(description="Cursor for pagination. When provided, the response will include the next page of results.")] = None, @@ -620,13 +620,13 @@ def get_vasps( ) -> Future[ApiResponse[TravelRuleGetAllVASPsResponse]]: """Get All VASPs - Get All VASPs. Returns a list of VASPs. VASPs can be searched and sorted. + Get All VASPs. Returns a list of VASPs. VASPs can be searched and sorted. Each VASP in the response may contain fields that are not documented in the schema below. Clients must ignore unrecognised fields rather than failing to deserialize. :param order: Field to order by :type order: str :param page_size: Records per page :type page_size: float - :param fields: CSV of fields to return (all, \"blank\" or see list of all field names below) + :param fields: The VASP fields to return. Optional. If omitted, each VASP is returned with a default subset of six fields: `did`, `name`, `website`, `logo`, `incorporationCountry` and `jurisdictions`. Pass `all` to return the complete record for each VASP. Most field names return exactly the requested field. A few behave differently: `documents` and `ddq` return a small default set of identifying fields instead of the requested one, and `travelRule_EMAIL` returns an empty object. An unrecognised field name causes an error. :type fields: List[str] :param search: Search query :type search: str diff --git a/fireblocks/configuration.py b/fireblocks/configuration.py index c0f18628..c1a025c0 100644 --- a/fireblocks/configuration.py +++ b/fireblocks/configuration.py @@ -550,7 +550,7 @@ def to_debug_report(self) -> str: "OS: {env}\n" "Python Version: {pyversion}\n" "Version of the API: 1.6.2\n" - "SDK Package Version: 25.0.0".format(env=sys.platform, pyversion=sys.version) + "SDK Package Version: 0.0.0".format(env=sys.platform, pyversion=sys.version) ) def get_host_settings(self) -> List[HostSetting]: diff --git a/fireblocks/models/__init__.py b/fireblocks/models/__init__.py index 7bbea7a6..98cb6597 100644 --- a/fireblocks/models/__init__.py +++ b/fireblocks/models/__init__.py @@ -1105,6 +1105,9 @@ from fireblocks.models.travel_rule_transaction_blockchain_info import TravelRuleTransactionBlockchainInfo from fireblocks.models.travel_rule_update_vasp_details import TravelRuleUpdateVASPDetails from fireblocks.models.travel_rule_vasp import TravelRuleVASP +from fireblocks.models.travel_rule_vasp_external_entity import TravelRuleVASPExternalEntity +from fireblocks.models.travel_rule_vasp_external_entity_config import TravelRuleVASPExternalEntityConfig +from fireblocks.models.travel_rule_vasp_external_entity_registration import TravelRuleVASPExternalEntityRegistration from fireblocks.models.travel_rule_validate_date_and_place_of_birth import TravelRuleValidateDateAndPlaceOfBirth from fireblocks.models.travel_rule_validate_full_transaction_request import TravelRuleValidateFullTransactionRequest from fireblocks.models.travel_rule_validate_geographic_address import TravelRuleValidateGeographicAddress diff --git a/fireblocks/models/contract_attributes.py b/fireblocks/models/contract_attributes.py index 5111169f..f01bb7c8 100644 --- a/fireblocks/models/contract_attributes.py +++ b/fireblocks/models/contract_attributes.py @@ -19,7 +19,7 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from fireblocks.models.auditor_data import AuditorData from typing import Optional, Set from typing_extensions import Self @@ -28,9 +28,9 @@ class ContractAttributes(BaseModel): """ ContractAttributes """ # noqa: E501 - use_cases: List[StrictStr] = Field(alias="useCases") - standards: List[StrictStr] - auditor: AuditorData + use_cases: Optional[List[StrictStr]] = Field(default=None, alias="useCases") + standards: Optional[List[StrictStr]] = Field(default=None, description="Token standards implemented by the contract (e.g. ERC-20, ERC-1400). Not returned for templates that do not follow ERC token standards, such as non-EVM templates (e.g. Stellar, Solana Token 2022)") + auditor: Optional[AuditorData] = None __properties: ClassVar[List[str]] = ["useCases", "standards", "auditor"] model_config = ConfigDict( diff --git a/fireblocks/models/travel_rule_issuer.py b/fireblocks/models/travel_rule_issuer.py index fbb38fc5..b0d2e679 100644 --- a/fireblocks/models/travel_rule_issuer.py +++ b/fireblocks/models/travel_rule_issuer.py @@ -19,16 +19,18 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from typing import Optional, Set from typing_extensions import Self class TravelRuleIssuer(BaseModel): """ - TravelRuleIssuer + An attestation of a single VASP attribute by an issuing party. """ # noqa: E501 - issuer_did: StrictStr = Field(alias="issuerDid") - __properties: ClassVar[List[str]] = ["issuerDid"] + issuer_did: StrictStr = Field(description="The Decentralized Identifier (DID) of the party that issued the attestation.", alias="issuerDid") + issued_date: Optional[StrictStr] = Field(default=None, description="Timestamp when the attestation was issued. Present on every attestation observed to date, but not guaranteed, so treat it as optional.", alias="issuedDate") + issuer_name: Optional[StrictStr] = Field(default=None, description="The human-readable name of the issuing party. Returned only for issuers that publish a name, such as GLEIF; absent for others, including in the same response.", alias="issuerName") + __properties: ClassVar[List[str]] = ["issuerDid", "issuedDate", "issuerName"] model_config = ConfigDict( populate_by_name=True, @@ -81,7 +83,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "issuerDid": obj.get("issuerDid") + "issuerDid": obj.get("issuerDid"), + "issuedDate": obj.get("issuedDate"), + "issuerName": obj.get("issuerName") }) return _obj diff --git a/fireblocks/models/travel_rule_vasp.py b/fireblocks/models/travel_rule_vasp.py index 2440a9d8..03d195e7 100644 --- a/fireblocks/models/travel_rule_vasp.py +++ b/fireblocks/models/travel_rule_vasp.py @@ -18,63 +18,99 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from fireblocks.models.travel_rule_issuers import TravelRuleIssuers +from fireblocks.models.travel_rule_vasp_external_entity_config import TravelRuleVASPExternalEntityConfig from typing import Optional, Set from typing_extensions import Self class TravelRuleVASP(BaseModel): """ - TravelRuleVASP + A VASP record from the Travel Rule trust framework directory. The set of keys returned depends on the `fields` query parameter. When `fields` is omitted, or supplied with an empty value, this endpoint returns the complete record. Additional fields may be present in the response beyond those documented here. Clients must ignore unrecognised fields rather than failing to deserialize. """ # noqa: E501 did: StrictStr = Field(description="The Decentralized Identifier (DID) of the VASP.") name: StrictStr = Field(description="The name of the VASP.") verification_status: StrictStr = Field(description="The current verification status of the VASP.", alias="verificationStatus") address_line1: StrictStr = Field(description="The first line of the VASP's address.", alias="addressLine1") - address_line2: Optional[StrictStr] = Field(default=None, description="The second line of the VASP's address (if applicable).", alias="addressLine2") + address_line2: Optional[StrictStr] = Field(default=None, description="The second line of the VASP's address (if applicable). May be null.", alias="addressLine2") city: StrictStr = Field(description="The city where the VASP is located.") country: StrictStr = Field(description="The country where the VASP is registered (ISO-3166 Alpha-2 code).") - email_domains: StrictStr = Field(description="Comma-separated list of email domains associated with the VASP.", alias="emailDomains") + email_domains: StrictStr = Field(description="The email domains associated with the VASP. The field's type is string; its content is a JSON-encoded array of domains. Clients must parse this value to obtain the array.", alias="emailDomains") website: StrictStr = Field(description="The official website of the VASP.") - logo: Optional[StrictStr] = Field(default=None, description="URL to the logo of the VASP.") + logo: Optional[StrictStr] = Field(default=None, description="URL to the logo of the VASP. May be null.") legal_structure: StrictStr = Field(description="The legal structure of the VASP (e.g., Corporation, LLC).", alias="legalStructure") legal_name: StrictStr = Field(description="The legal name of the VASP.", alias="legalName") - year_founded: StrictStr = Field(description="The year the VASP was founded.", alias="yearFounded") + year_founded: StrictStr = Field(description="The year the VASP was founded. Returned as a string, not an integer.", alias="yearFounded") incorporation_country: StrictStr = Field(description="The country where the VASP is incorporated (ISO-3166 Alpha-2 code).", alias="incorporationCountry") is_regulated: StrictStr = Field(description="Indicates whether the VASP is regulated.", alias="isRegulated") - other_names: Optional[StrictStr] = Field(default=None, description="Other names the VASP is known by.", alias="otherNames") + other_names: Optional[StrictStr] = Field(default=None, description="Other names the VASP is known by. May be null.", alias="otherNames") identification_type: Optional[StrictStr] = Field(default=None, description="The type of identification used by the VASP.", alias="identificationType") - identification_country: Optional[StrictStr] = Field(default=None, description="The country of identification for the VASP (ISO-3166 Alpha-2 code).", alias="identificationCountry") + identification_country: Optional[StrictStr] = Field(default=None, description="The country of identification for the VASP (ISO-3166 Alpha-2 code). May be null.", alias="identificationCountry") business_number: Optional[StrictStr] = Field(default=None, description="The business registration number of the VASP.", alias="businessNumber") - regulatory_authorities: Optional[StrictStr] = Field(default=None, description="The regulatory authorities overseeing the VASP.", alias="regulatoryAuthorities") + regulatory_authorities: Optional[StrictStr] = Field(default=None, description="The regulatory authorities overseeing the VASP. May be null.", alias="regulatoryAuthorities") jurisdictions: StrictStr = Field(description="The jurisdictions where the VASP operates.") - street: Optional[StrictStr] = Field(default=None, description="The street name where the VASP is located.") - number: Optional[StrictStr] = Field(default=None, description="The building number of the VASP's address.") - unit: Optional[StrictStr] = Field(default=None, description="The unit or suite number of the VASP's address.") + division: Optional[StrictStr] = Field(default=None, description="The division of the VASP's registered address, where applicable.") + street: Optional[StrictStr] = Field(default=None, description="The street name where the VASP is located. May be null.") + number: Optional[StrictStr] = Field(default=None, description="The building number of the VASP's address. May be returned as an empty string when not supplied.") + unit: Optional[StrictStr] = Field(default=None, description="The unit or suite number of the VASP's address. May be null.") post_code: Optional[StrictStr] = Field(default=None, description="The postal code of the VASP's location.", alias="postCode") state: Optional[StrictStr] = Field(default=None, description="The state or region where the VASP is located.") - certificates: Optional[StrictStr] = Field(default=None, description="Certificates or licenses held by the VASP.") - description: Optional[StrictStr] = Field(default=None, description="A brief description of the VASP.") - travel_rule_openvasp: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for OpenVASP.", alias="travelRule_OPENVASP") - travel_rule_sygna: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for Sygna.", alias="travelRule_SYGNA") - travel_rule_trisa: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for TRISA.", alias="travelRule_TRISA") + other_legal_name: Optional[StrictStr] = Field(default=None, description="Alternative legal names of the VASP, as a comma-separated list. Resolved from an external registry, so it is only populated for VASPs with a resolved entity record.", alias="otherLegalName") + gleif_updated_at: Optional[StrictStr] = Field(default=None, description="Timestamp of the last synchronization with the GLEIF registry. Only populated for VASPs with a GLEIF-resolved LEI.", alias="gleifUpdatedAt") + lei_number: Optional[StrictStr] = Field(default=None, description="The VASP's Legal Entity Identifier (LEI), a 20-character alphanumeric code. Only populated for VASPs with a GLEIF-resolved LEI.", alias="leiNumber") + legal_form: Optional[StrictStr] = Field(default=None, description="The GLEIF Entity Legal Form (ELF) code of the VASP. Only populated for VASPs with a GLEIF-resolved LEI.", alias="legalForm") + entity_category: Optional[StrictStr] = Field(default=None, description="The GLEIF entity category of the VASP. Only populated for VASPs with a GLEIF-resolved LEI.", alias="entityCategory") + entity_status: Optional[StrictStr] = Field(default=None, description="The GLEIF entity status of the VASP. Only populated for VASPs with a GLEIF-resolved LEI.", alias="entityStatus") + external_entity_config: Optional[List[TravelRuleVASPExternalEntityConfig]] = Field(default=None, description="Entity records resolved from external registries, such as GLEIF. Only populated for VASPs that have been resolved against at least one external registry.", alias="externalEntityConfig") + hq_street: Optional[StrictStr] = Field(default=None, description="The street of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI.", alias="hqStreet") + hq_number: Optional[StrictStr] = Field(default=None, description="The building number of the VASP's headquarters address. May be returned as an empty string as well as `null` when not supplied.", alias="hqNumber") + hq_postcode: Optional[StrictStr] = Field(default=None, description="The postal code of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI.", alias="hqPostcode") + hq_region: Optional[StrictStr] = Field(default=None, description="The region of the VASP's headquarters address, as an ISO-3166-2 subdivision code. Only populated for VASPs with a GLEIF-resolved LEI.", alias="hqRegion") + hq_city: Optional[StrictStr] = Field(default=None, description="The city of the VASP's headquarters address. Only populated for VASPs with a GLEIF-resolved LEI.", alias="hqCity") + hq_country: Optional[StrictStr] = Field(default=None, description="The country of the VASP's headquarters address (ISO-3166 Alpha-2 code). Only populated for VASPs with a GLEIF-resolved LEI.", alias="hqCountry") + certificates: Optional[StrictStr] = Field(default=None, description="Certificates or licenses held by the VASP. May be null.") + description: Optional[StrictStr] = Field(default=None, description="A brief description of the VASP. May be null.") + travel_rule_openvasp: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for OpenVASP. Null when the VASP does not support this protocol.", alias="travelRule_OPENVASP") + travel_rule_sygna: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for Sygna. Null when the VASP does not support this protocol.", alias="travelRule_SYGNA") + travel_rule_trisa: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for TRISA. Null when the VASP does not support this protocol.", alias="travelRule_TRISA") travel_rule_trlight: StrictStr = Field(description="Travel rule compliance status for TRLight.", alias="travelRule_TRLIGHT") - travel_rule_email: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for EMAIL.", alias="travelRule_EMAIL") - travel_rule_trp: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for TRP.", alias="travelRule_TRP") - travel_rule_shyft: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for Shyft.", alias="travelRule_SHYFT") - travel_rule_ustravelrulewg: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for US Travel Rule WG.", alias="travelRule_USTRAVELRULEWG") + travel_rule_email: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for EMAIL. Null when the VASP does not support this protocol.", alias="travelRule_EMAIL") + travel_rule_trp: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for TRP. Null when the VASP does not support this protocol.", alias="travelRule_TRP") + travel_rule_shyft: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for Shyft. Null when the VASP does not support this protocol.", alias="travelRule_SHYFT") + travel_rule_ustravelrulewg: Optional[StrictStr] = Field(default=None, description="Travel rule compliance status for US Travel Rule WG. Null when the VASP does not support this protocol.", alias="travelRule_USTRAVELRULEWG") created_at: StrictStr = Field(description="Timestamp when the VASP record was created.", alias="createdAt") - created_by: Optional[StrictStr] = Field(default=None, description="User or system that created the VASP record.", alias="createdBy") + created_by: Optional[StrictStr] = Field(default=None, description="The DID of the party that created the VASP record. May be null.", alias="createdBy") updated_at: Optional[StrictStr] = Field(default=None, description="Timestamp of the last update to the VASP record.", alias="updatedAt") - updated_by: Optional[StrictStr] = Field(default=None, description="User or system that last updated the VASP record.", alias="updatedBy") + updated_by: Optional[StrictStr] = Field(default=None, description="The DID of the party that last updated the VASP record.", alias="updatedBy") last_sent_date: Optional[StrictStr] = Field(default=None, description="The last date a transaction was sent by the VASP.", alias="lastSentDate") last_received_date: Optional[StrictStr] = Field(default=None, description="The last date a transaction was received by the VASP.", alias="lastReceivedDate") - documents: Optional[StrictStr] = Field(default=None, description="Documents associated with the VASP.") + documents: Optional[StrictStr] = Field(default=None, description="Documents associated with the VASP. May be null.") has_admin: StrictBool = Field(description="Indicates if the VASP has an admin.", alias="hasAdmin") is_notifiable: StrictBool = Field(description="Indicates if the VASP is notifiable for compliance reasons.", alias="isNotifiable") issuers: TravelRuleIssuers - __properties: ClassVar[List[str]] = ["did", "name", "verificationStatus", "addressLine1", "addressLine2", "city", "country", "emailDomains", "website", "logo", "legalStructure", "legalName", "yearFounded", "incorporationCountry", "isRegulated", "otherNames", "identificationType", "identificationCountry", "businessNumber", "regulatoryAuthorities", "jurisdictions", "street", "number", "unit", "postCode", "state", "certificates", "description", "travelRule_OPENVASP", "travelRule_SYGNA", "travelRule_TRISA", "travelRule_TRLIGHT", "travelRule_EMAIL", "travelRule_TRP", "travelRule_SHYFT", "travelRule_USTRAVELRULEWG", "createdAt", "createdBy", "updatedAt", "updatedBy", "lastSentDate", "lastReceivedDate", "documents", "hasAdmin", "isNotifiable", "issuers"] + regulatory_status: Optional[StrictStr] = Field(default=None, description="The regulatory status of the VASP, as free text.", alias="regulatoryStatus") + supervisory_authority: Optional[StrictStr] = Field(default=None, description="The supervisory authority responsible for the VASP.", alias="supervisoryAuthority") + registration_license_id: Optional[StrictStr] = Field(default=None, description="The identifier of the VASP's registration or operating license.", alias="registrationLicenseId") + status_start_date: Optional[StrictStr] = Field(default=None, description="The date the VASP's current regulatory status took effect.", alias="statusStartDate") + status_expiration_date: Optional[StrictStr] = Field(default=None, description="The date the VASP's current regulatory status expires.", alias="statusExpirationDate") + last_checked: Optional[StrictStr] = Field(default=None, description="Timestamp of the last verification of the VASP's regulatory status.", alias="lastChecked") + additional_information: Optional[StrictStr] = Field(default=None, description="Additional free-text information about the VASP.", alias="additionalInformation") + subsidiary_of: Optional[StrictStr] = Field(default=None, description="The DID of the parent VASP, when this VASP is a subsidiary of another.", alias="subsidiaryOf") + pii_didkey: Optional[StrictStr] = Field(default=None, description="The VASP's public PII encryption key, published in the trust framework directory. Use it to encrypt IVMS101 personally identifiable information addressed to this VASP.") + compliance_phase: Optional[StrictInt] = Field(default=None, description="The VASP's current compliance onboarding phase.", alias="compliancePhase") + compliance_phase_data: Optional[Dict[str, StrictBool]] = Field(default=None, description="The VASP's progress through the Travel Rule compliance onboarding milestones, as a map keyed by milestone code. Each value indicates whether that milestone has been completed. The set of milestone codes is defined by the Travel Rule provider and may change over time, so clients must not assume any particular key is present. Examples of milestone codes include `TX_SENT`, `TX_NOTIFY_API`, `TF_VASP_VERIFIED`, `RULES_CUSTOM_INCOMING` and `INTEGRATIONS_WIDGET`.", alias="compliancePhaseData") + vaspnet_id: Optional[StrictStr] = Field(default=None, description="The VASP's VASPnet identifier.", alias="vaspnetId") + vaspnet_updated_at: Optional[StrictStr] = Field(default=None, description="Timestamp of the last synchronization with VASPnet.", alias="vaspnetUpdatedAt") + vaspnet_immutable_fields: Optional[List[StrictStr]] = Field(default=None, description="Names of the fields that are managed by VASPnet and cannot be modified locally. Empty when no fields are locked.", alias="vaspnetImmutableFields") + node_didkey: Optional[StrictStr] = Field(default=None, description="The public key of the Travel Rule node serving this VASP record. The format has not been confirmed against a live response; every observed value has been null.") + ddq: Optional[StrictStr] = Field(default=None, description="The VASP's Due Diligence Questionnaire, as a JSON-encoded string containing a `data` object and an `updatedAt` timestamp. Clients must parse this value.") + target_protocol: Optional[StrictStr] = Field(default=None, description="The Travel Rule protocol used to reach this VASP, when a specific one is configured.", alias="targetProtocol") + parent_gateway: Optional[StrictStr] = Field(default=None, description="The DID of the gateway VASP that routes messages on this VASP's behalf.", alias="parentGateway") + is_active_sender: Optional[StrictBool] = Field(default=None, description="Indicates if the VASP actively sends Travel Rule transfers.", alias="isActiveSender") + is_active_receiver: Optional[StrictBool] = Field(default=None, description="Indicates if the VASP actively receives Travel Rule transfers.", alias="isActiveReceiver") + subsidiaries: Optional[List[Any]] = Field(default=None, description="The VASP's subsidiary entities. The element schema is not yet documented, as no response containing a populated value has been observed; do not assume a particular element type.") + __properties: ClassVar[List[str]] = ["did", "name", "verificationStatus", "addressLine1", "addressLine2", "city", "country", "emailDomains", "website", "logo", "legalStructure", "legalName", "yearFounded", "incorporationCountry", "isRegulated", "otherNames", "identificationType", "identificationCountry", "businessNumber", "regulatoryAuthorities", "jurisdictions", "division", "street", "number", "unit", "postCode", "state", "otherLegalName", "gleifUpdatedAt", "leiNumber", "legalForm", "entityCategory", "entityStatus", "externalEntityConfig", "hqStreet", "hqNumber", "hqPostcode", "hqRegion", "hqCity", "hqCountry", "certificates", "description", "travelRule_OPENVASP", "travelRule_SYGNA", "travelRule_TRISA", "travelRule_TRLIGHT", "travelRule_EMAIL", "travelRule_TRP", "travelRule_SHYFT", "travelRule_USTRAVELRULEWG", "createdAt", "createdBy", "updatedAt", "updatedBy", "lastSentDate", "lastReceivedDate", "documents", "hasAdmin", "isNotifiable", "issuers", "regulatoryStatus", "supervisoryAuthority", "registrationLicenseId", "statusStartDate", "statusExpirationDate", "lastChecked", "additionalInformation", "subsidiaryOf", "pii_didkey", "compliancePhase", "compliancePhaseData", "vaspnetId", "vaspnetUpdatedAt", "vaspnetImmutableFields", "node_didkey", "ddq", "targetProtocol", "parentGateway", "isActiveSender", "isActiveReceiver", "subsidiaries"] model_config = ConfigDict( populate_by_name=True, @@ -115,9 +151,191 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of each item in external_entity_config (list) + _items = [] + if self.external_entity_config: + for _item_external_entity_config in self.external_entity_config: + if _item_external_entity_config: + _items.append(_item_external_entity_config.to_dict()) + _dict['externalEntityConfig'] = _items # override the default output from pydantic by calling `to_dict()` of issuers if self.issuers: _dict['issuers'] = self.issuers.to_dict() + # set to None if division (nullable) is None + # and model_fields_set contains the field + if self.division is None and "division" in self.model_fields_set: + _dict['division'] = None + + # set to None if other_legal_name (nullable) is None + # and model_fields_set contains the field + if self.other_legal_name is None and "other_legal_name" in self.model_fields_set: + _dict['otherLegalName'] = None + + # set to None if gleif_updated_at (nullable) is None + # and model_fields_set contains the field + if self.gleif_updated_at is None and "gleif_updated_at" in self.model_fields_set: + _dict['gleifUpdatedAt'] = None + + # set to None if lei_number (nullable) is None + # and model_fields_set contains the field + if self.lei_number is None and "lei_number" in self.model_fields_set: + _dict['leiNumber'] = None + + # set to None if legal_form (nullable) is None + # and model_fields_set contains the field + if self.legal_form is None and "legal_form" in self.model_fields_set: + _dict['legalForm'] = None + + # set to None if entity_category (nullable) is None + # and model_fields_set contains the field + if self.entity_category is None and "entity_category" in self.model_fields_set: + _dict['entityCategory'] = None + + # set to None if entity_status (nullable) is None + # and model_fields_set contains the field + if self.entity_status is None and "entity_status" in self.model_fields_set: + _dict['entityStatus'] = None + + # set to None if external_entity_config (nullable) is None + # and model_fields_set contains the field + if self.external_entity_config is None and "external_entity_config" in self.model_fields_set: + _dict['externalEntityConfig'] = None + + # set to None if hq_street (nullable) is None + # and model_fields_set contains the field + if self.hq_street is None and "hq_street" in self.model_fields_set: + _dict['hqStreet'] = None + + # set to None if hq_number (nullable) is None + # and model_fields_set contains the field + if self.hq_number is None and "hq_number" in self.model_fields_set: + _dict['hqNumber'] = None + + # set to None if hq_postcode (nullable) is None + # and model_fields_set contains the field + if self.hq_postcode is None and "hq_postcode" in self.model_fields_set: + _dict['hqPostcode'] = None + + # set to None if hq_region (nullable) is None + # and model_fields_set contains the field + if self.hq_region is None and "hq_region" in self.model_fields_set: + _dict['hqRegion'] = None + + # set to None if hq_city (nullable) is None + # and model_fields_set contains the field + if self.hq_city is None and "hq_city" in self.model_fields_set: + _dict['hqCity'] = None + + # set to None if hq_country (nullable) is None + # and model_fields_set contains the field + if self.hq_country is None and "hq_country" in self.model_fields_set: + _dict['hqCountry'] = None + + # set to None if regulatory_status (nullable) is None + # and model_fields_set contains the field + if self.regulatory_status is None and "regulatory_status" in self.model_fields_set: + _dict['regulatoryStatus'] = None + + # set to None if supervisory_authority (nullable) is None + # and model_fields_set contains the field + if self.supervisory_authority is None and "supervisory_authority" in self.model_fields_set: + _dict['supervisoryAuthority'] = None + + # set to None if registration_license_id (nullable) is None + # and model_fields_set contains the field + if self.registration_license_id is None and "registration_license_id" in self.model_fields_set: + _dict['registrationLicenseId'] = None + + # set to None if status_start_date (nullable) is None + # and model_fields_set contains the field + if self.status_start_date is None and "status_start_date" in self.model_fields_set: + _dict['statusStartDate'] = None + + # set to None if status_expiration_date (nullable) is None + # and model_fields_set contains the field + if self.status_expiration_date is None and "status_expiration_date" in self.model_fields_set: + _dict['statusExpirationDate'] = None + + # set to None if last_checked (nullable) is None + # and model_fields_set contains the field + if self.last_checked is None and "last_checked" in self.model_fields_set: + _dict['lastChecked'] = None + + # set to None if additional_information (nullable) is None + # and model_fields_set contains the field + if self.additional_information is None and "additional_information" in self.model_fields_set: + _dict['additionalInformation'] = None + + # set to None if subsidiary_of (nullable) is None + # and model_fields_set contains the field + if self.subsidiary_of is None and "subsidiary_of" in self.model_fields_set: + _dict['subsidiaryOf'] = None + + # set to None if pii_didkey (nullable) is None + # and model_fields_set contains the field + if self.pii_didkey is None and "pii_didkey" in self.model_fields_set: + _dict['pii_didkey'] = None + + # set to None if compliance_phase (nullable) is None + # and model_fields_set contains the field + if self.compliance_phase is None and "compliance_phase" in self.model_fields_set: + _dict['compliancePhase'] = None + + # set to None if compliance_phase_data (nullable) is None + # and model_fields_set contains the field + if self.compliance_phase_data is None and "compliance_phase_data" in self.model_fields_set: + _dict['compliancePhaseData'] = None + + # set to None if vaspnet_id (nullable) is None + # and model_fields_set contains the field + if self.vaspnet_id is None and "vaspnet_id" in self.model_fields_set: + _dict['vaspnetId'] = None + + # set to None if vaspnet_updated_at (nullable) is None + # and model_fields_set contains the field + if self.vaspnet_updated_at is None and "vaspnet_updated_at" in self.model_fields_set: + _dict['vaspnetUpdatedAt'] = None + + # set to None if vaspnet_immutable_fields (nullable) is None + # and model_fields_set contains the field + if self.vaspnet_immutable_fields is None and "vaspnet_immutable_fields" in self.model_fields_set: + _dict['vaspnetImmutableFields'] = None + + # set to None if node_didkey (nullable) is None + # and model_fields_set contains the field + if self.node_didkey is None and "node_didkey" in self.model_fields_set: + _dict['node_didkey'] = None + + # set to None if ddq (nullable) is None + # and model_fields_set contains the field + if self.ddq is None and "ddq" in self.model_fields_set: + _dict['ddq'] = None + + # set to None if target_protocol (nullable) is None + # and model_fields_set contains the field + if self.target_protocol is None and "target_protocol" in self.model_fields_set: + _dict['targetProtocol'] = None + + # set to None if parent_gateway (nullable) is None + # and model_fields_set contains the field + if self.parent_gateway is None and "parent_gateway" in self.model_fields_set: + _dict['parentGateway'] = None + + # set to None if is_active_sender (nullable) is None + # and model_fields_set contains the field + if self.is_active_sender is None and "is_active_sender" in self.model_fields_set: + _dict['isActiveSender'] = None + + # set to None if is_active_receiver (nullable) is None + # and model_fields_set contains the field + if self.is_active_receiver is None and "is_active_receiver" in self.model_fields_set: + _dict['isActiveReceiver'] = None + + # set to None if subsidiaries (nullable) is None + # and model_fields_set contains the field + if self.subsidiaries is None and "subsidiaries" in self.model_fields_set: + _dict['subsidiaries'] = None + return _dict @classmethod @@ -151,11 +369,25 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "businessNumber": obj.get("businessNumber"), "regulatoryAuthorities": obj.get("regulatoryAuthorities"), "jurisdictions": obj.get("jurisdictions"), + "division": obj.get("division"), "street": obj.get("street"), "number": obj.get("number"), "unit": obj.get("unit"), "postCode": obj.get("postCode"), "state": obj.get("state"), + "otherLegalName": obj.get("otherLegalName"), + "gleifUpdatedAt": obj.get("gleifUpdatedAt"), + "leiNumber": obj.get("leiNumber"), + "legalForm": obj.get("legalForm"), + "entityCategory": obj.get("entityCategory"), + "entityStatus": obj.get("entityStatus"), + "externalEntityConfig": [TravelRuleVASPExternalEntityConfig.from_dict(_item) for _item in obj["externalEntityConfig"]] if obj.get("externalEntityConfig") is not None else None, + "hqStreet": obj.get("hqStreet"), + "hqNumber": obj.get("hqNumber"), + "hqPostcode": obj.get("hqPostcode"), + "hqRegion": obj.get("hqRegion"), + "hqCity": obj.get("hqCity"), + "hqCountry": obj.get("hqCountry"), "certificates": obj.get("certificates"), "description": obj.get("description"), "travelRule_OPENVASP": obj.get("travelRule_OPENVASP"), @@ -175,7 +407,28 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "documents": obj.get("documents"), "hasAdmin": obj.get("hasAdmin"), "isNotifiable": obj.get("isNotifiable"), - "issuers": TravelRuleIssuers.from_dict(obj["issuers"]) if obj.get("issuers") is not None else None + "issuers": TravelRuleIssuers.from_dict(obj["issuers"]) if obj.get("issuers") is not None else None, + "regulatoryStatus": obj.get("regulatoryStatus"), + "supervisoryAuthority": obj.get("supervisoryAuthority"), + "registrationLicenseId": obj.get("registrationLicenseId"), + "statusStartDate": obj.get("statusStartDate"), + "statusExpirationDate": obj.get("statusExpirationDate"), + "lastChecked": obj.get("lastChecked"), + "additionalInformation": obj.get("additionalInformation"), + "subsidiaryOf": obj.get("subsidiaryOf"), + "pii_didkey": obj.get("pii_didkey"), + "compliancePhase": obj.get("compliancePhase"), + "compliancePhaseData": obj.get("compliancePhaseData"), + "vaspnetId": obj.get("vaspnetId"), + "vaspnetUpdatedAt": obj.get("vaspnetUpdatedAt"), + "vaspnetImmutableFields": obj.get("vaspnetImmutableFields"), + "node_didkey": obj.get("node_didkey"), + "ddq": obj.get("ddq"), + "targetProtocol": obj.get("targetProtocol"), + "parentGateway": obj.get("parentGateway"), + "isActiveSender": obj.get("isActiveSender"), + "isActiveReceiver": obj.get("isActiveReceiver"), + "subsidiaries": obj.get("subsidiaries") }) return _obj diff --git a/fireblocks/models/travel_rule_vasp_external_entity.py b/fireblocks/models/travel_rule_vasp_external_entity.py new file mode 100644 index 00000000..e36b22e4 --- /dev/null +++ b/fireblocks/models/travel_rule_vasp_external_entity.py @@ -0,0 +1,233 @@ +# coding: utf-8 + +""" + Fireblocks API + + Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + + The version of the OpenAPI document: 1.6.2 + Contact: developers@fireblocks.com + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TravelRuleVASPExternalEntity(BaseModel): + """ + The VASP's entity data as held by an external registry. These fields mirror a subset of the top-level VASP fields, but carry the registry's values rather than the VASP's own, so the two may differ. + """ # noqa: E501 + legal_name: Optional[StrictStr] = Field(default=None, description="The legal name of the entity as recorded by the external registry.", alias="legalName") + other_legal_name: Optional[StrictStr] = Field(default=None, description="Alternative legal names of the entity, as a comma-separated list.", alias="otherLegalName") + legal_form: Optional[StrictStr] = Field(default=None, description="The Entity Legal Form (ELF) code of the entity.", alias="legalForm") + legal_structure: Optional[StrictStr] = Field(default=None, description="The legal structure of the entity. The external registry may return the Entity Legal Form code in this field, so its value can duplicate `legalForm`.", alias="legalStructure") + entity_category: Optional[StrictStr] = Field(default=None, description="The category assigned to the entity by the external registry.", alias="entityCategory") + entity_status: Optional[StrictStr] = Field(default=None, description="The status of the entity at the external registry.", alias="entityStatus") + business_number: Optional[StrictStr] = Field(default=None, description="The business registration number of the entity.", alias="businessNumber") + year_founded: Optional[StrictStr] = Field(default=None, description="The year the entity was founded. Returned as a string, not an integer.", alias="yearFounded") + jurisdictions: Optional[StrictStr] = Field(default=None, description="The jurisdictions the entity is registered in.") + address_line1: Optional[StrictStr] = Field(default=None, description="The first line of the entity's registered address.", alias="addressLine1") + number: Optional[StrictStr] = Field(default=None, description="The building number of the entity's registered address. May be returned as an empty string as well as `null` when not supplied.") + post_code: Optional[StrictStr] = Field(default=None, description="The postal code of the entity's registered address.", alias="postCode") + city: Optional[StrictStr] = Field(default=None, description="The city of the entity's registered address.") + state: Optional[StrictStr] = Field(default=None, description="The state or region of the entity's registered address, as an ISO-3166-2 subdivision code.") + country: Optional[StrictStr] = Field(default=None, description="The country of the entity's registered address (ISO-3166 Alpha-2 code).") + hq_street: Optional[StrictStr] = Field(default=None, description="The street of the entity's headquarters address.", alias="hqStreet") + hq_number: Optional[StrictStr] = Field(default=None, description="The building number of the entity's headquarters address. May be returned as an empty string as well as `null` when not supplied.", alias="hqNumber") + hq_postcode: Optional[StrictStr] = Field(default=None, description="The postal code of the entity's headquarters address.", alias="hqPostcode") + hq_city: Optional[StrictStr] = Field(default=None, description="The city of the entity's headquarters address.", alias="hqCity") + hq_region: Optional[StrictStr] = Field(default=None, description="The region of the entity's headquarters address, as an ISO-3166-2 subdivision code.", alias="hqRegion") + hq_country: Optional[StrictStr] = Field(default=None, description="The country of the entity's headquarters address (ISO-3166 Alpha-2 code).", alias="hqCountry") + __properties: ClassVar[List[str]] = ["legalName", "otherLegalName", "legalForm", "legalStructure", "entityCategory", "entityStatus", "businessNumber", "yearFounded", "jurisdictions", "addressLine1", "number", "postCode", "city", "state", "country", "hqStreet", "hqNumber", "hqPostcode", "hqCity", "hqRegion", "hqCountry"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntity from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if legal_name (nullable) is None + # and model_fields_set contains the field + if self.legal_name is None and "legal_name" in self.model_fields_set: + _dict['legalName'] = None + + # set to None if other_legal_name (nullable) is None + # and model_fields_set contains the field + if self.other_legal_name is None and "other_legal_name" in self.model_fields_set: + _dict['otherLegalName'] = None + + # set to None if legal_form (nullable) is None + # and model_fields_set contains the field + if self.legal_form is None and "legal_form" in self.model_fields_set: + _dict['legalForm'] = None + + # set to None if legal_structure (nullable) is None + # and model_fields_set contains the field + if self.legal_structure is None and "legal_structure" in self.model_fields_set: + _dict['legalStructure'] = None + + # set to None if entity_category (nullable) is None + # and model_fields_set contains the field + if self.entity_category is None and "entity_category" in self.model_fields_set: + _dict['entityCategory'] = None + + # set to None if entity_status (nullable) is None + # and model_fields_set contains the field + if self.entity_status is None and "entity_status" in self.model_fields_set: + _dict['entityStatus'] = None + + # set to None if business_number (nullable) is None + # and model_fields_set contains the field + if self.business_number is None and "business_number" in self.model_fields_set: + _dict['businessNumber'] = None + + # set to None if year_founded (nullable) is None + # and model_fields_set contains the field + if self.year_founded is None and "year_founded" in self.model_fields_set: + _dict['yearFounded'] = None + + # set to None if jurisdictions (nullable) is None + # and model_fields_set contains the field + if self.jurisdictions is None and "jurisdictions" in self.model_fields_set: + _dict['jurisdictions'] = None + + # set to None if address_line1 (nullable) is None + # and model_fields_set contains the field + if self.address_line1 is None and "address_line1" in self.model_fields_set: + _dict['addressLine1'] = None + + # set to None if number (nullable) is None + # and model_fields_set contains the field + if self.number is None and "number" in self.model_fields_set: + _dict['number'] = None + + # set to None if post_code (nullable) is None + # and model_fields_set contains the field + if self.post_code is None and "post_code" in self.model_fields_set: + _dict['postCode'] = None + + # set to None if city (nullable) is None + # and model_fields_set contains the field + if self.city is None and "city" in self.model_fields_set: + _dict['city'] = None + + # set to None if state (nullable) is None + # and model_fields_set contains the field + if self.state is None and "state" in self.model_fields_set: + _dict['state'] = None + + # set to None if country (nullable) is None + # and model_fields_set contains the field + if self.country is None and "country" in self.model_fields_set: + _dict['country'] = None + + # set to None if hq_street (nullable) is None + # and model_fields_set contains the field + if self.hq_street is None and "hq_street" in self.model_fields_set: + _dict['hqStreet'] = None + + # set to None if hq_number (nullable) is None + # and model_fields_set contains the field + if self.hq_number is None and "hq_number" in self.model_fields_set: + _dict['hqNumber'] = None + + # set to None if hq_postcode (nullable) is None + # and model_fields_set contains the field + if self.hq_postcode is None and "hq_postcode" in self.model_fields_set: + _dict['hqPostcode'] = None + + # set to None if hq_city (nullable) is None + # and model_fields_set contains the field + if self.hq_city is None and "hq_city" in self.model_fields_set: + _dict['hqCity'] = None + + # set to None if hq_region (nullable) is None + # and model_fields_set contains the field + if self.hq_region is None and "hq_region" in self.model_fields_set: + _dict['hqRegion'] = None + + # set to None if hq_country (nullable) is None + # and model_fields_set contains the field + if self.hq_country is None and "hq_country" in self.model_fields_set: + _dict['hqCountry'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntity from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "legalName": obj.get("legalName"), + "otherLegalName": obj.get("otherLegalName"), + "legalForm": obj.get("legalForm"), + "legalStructure": obj.get("legalStructure"), + "entityCategory": obj.get("entityCategory"), + "entityStatus": obj.get("entityStatus"), + "businessNumber": obj.get("businessNumber"), + "yearFounded": obj.get("yearFounded"), + "jurisdictions": obj.get("jurisdictions"), + "addressLine1": obj.get("addressLine1"), + "number": obj.get("number"), + "postCode": obj.get("postCode"), + "city": obj.get("city"), + "state": obj.get("state"), + "country": obj.get("country"), + "hqStreet": obj.get("hqStreet"), + "hqNumber": obj.get("hqNumber"), + "hqPostcode": obj.get("hqPostcode"), + "hqCity": obj.get("hqCity"), + "hqRegion": obj.get("hqRegion"), + "hqCountry": obj.get("hqCountry") + }) + return _obj + + diff --git a/fireblocks/models/travel_rule_vasp_external_entity_config.py b/fireblocks/models/travel_rule_vasp_external_entity_config.py new file mode 100644 index 00000000..c0d1e839 --- /dev/null +++ b/fireblocks/models/travel_rule_vasp_external_entity_config.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" + Fireblocks API + + Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + + The version of the OpenAPI document: 1.6.2 + Contact: developers@fireblocks.com + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.travel_rule_vasp_external_entity import TravelRuleVASPExternalEntity +from fireblocks.models.travel_rule_vasp_external_entity_registration import TravelRuleVASPExternalEntityRegistration +from typing import Optional, Set +from typing_extensions import Self + +class TravelRuleVASPExternalEntityConfig(BaseModel): + """ + An entity record for the VASP as resolved from an external registry, together with the registration state reported by that registry. + """ # noqa: E501 + provider: Optional[StrictStr] = Field(default=None, description="The external registry the record was resolved from. Returned in lower case, for example `gleif`.") + external_id: Optional[StrictStr] = Field(default=None, description="The VASP's identifier within the external registry. For the `gleif` provider this is the Legal Entity Identifier (LEI).", alias="externalId") + updated_at: Optional[StrictStr] = Field(default=None, description="Timestamp of the last change to the record at the external registry.", alias="updatedAt") + resolved_at: Optional[StrictStr] = Field(default=None, description="Timestamp when the record was last resolved from the external registry.", alias="resolvedAt") + entity: Optional[TravelRuleVASPExternalEntity] = None + registration: Optional[TravelRuleVASPExternalEntityRegistration] = None + __properties: ClassVar[List[str]] = ["provider", "externalId", "updatedAt", "resolvedAt", "entity", "registration"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntityConfig from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of entity + if self.entity: + _dict['entity'] = self.entity.to_dict() + # override the default output from pydantic by calling `to_dict()` of registration + if self.registration: + _dict['registration'] = self.registration.to_dict() + # set to None if external_id (nullable) is None + # and model_fields_set contains the field + if self.external_id is None and "external_id" in self.model_fields_set: + _dict['externalId'] = None + + # set to None if updated_at (nullable) is None + # and model_fields_set contains the field + if self.updated_at is None and "updated_at" in self.model_fields_set: + _dict['updatedAt'] = None + + # set to None if resolved_at (nullable) is None + # and model_fields_set contains the field + if self.resolved_at is None and "resolved_at" in self.model_fields_set: + _dict['resolvedAt'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntityConfig from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "provider": obj.get("provider"), + "externalId": obj.get("externalId"), + "updatedAt": obj.get("updatedAt"), + "resolvedAt": obj.get("resolvedAt"), + "entity": TravelRuleVASPExternalEntity.from_dict(obj["entity"]) if obj.get("entity") is not None else None, + "registration": TravelRuleVASPExternalEntityRegistration.from_dict(obj["registration"]) if obj.get("registration") is not None else None + }) + return _obj + + diff --git a/fireblocks/models/travel_rule_vasp_external_entity_registration.py b/fireblocks/models/travel_rule_vasp_external_entity_registration.py new file mode 100644 index 00000000..fb9f4af9 --- /dev/null +++ b/fireblocks/models/travel_rule_vasp_external_entity_registration.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" + Fireblocks API + + Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + + The version of the OpenAPI document: 1.6.2 + Contact: developers@fireblocks.com + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TravelRuleVASPExternalEntityRegistration(BaseModel): + """ + The registration state of the VASP as reported by an external registry. + """ # noqa: E501 + status: Optional[StrictStr] = Field(default=None, description="The registration status at the external registry, for example `ISSUED`, `LAPSED` or `RETIRED`. The value set is defined by the registry, not by Fireblocks.") + next_renewal_date: Optional[StrictStr] = Field(default=None, description="The date the registration is next due for renewal at the external registry.", alias="nextRenewalDate") + corroboration_level: Optional[StrictStr] = Field(default=None, description="The level to which the registry has corroborated the entity data, for example `FULLY_CORROBORATED`. The value set is defined by the registry, not by Fireblocks.", alias="corroborationLevel") + __properties: ClassVar[List[str]] = ["status", "nextRenewalDate", "corroborationLevel"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntityRegistration from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if status (nullable) is None + # and model_fields_set contains the field + if self.status is None and "status" in self.model_fields_set: + _dict['status'] = None + + # set to None if next_renewal_date (nullable) is None + # and model_fields_set contains the field + if self.next_renewal_date is None and "next_renewal_date" in self.model_fields_set: + _dict['nextRenewalDate'] = None + + # set to None if corroboration_level (nullable) is None + # and model_fields_set contains the field + if self.corroboration_level is None and "corroboration_level" in self.model_fields_set: + _dict['corroborationLevel'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TravelRuleVASPExternalEntityRegistration from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "status": obj.get("status"), + "nextRenewalDate": obj.get("nextRenewalDate"), + "corroborationLevel": obj.get("corroborationLevel") + }) + return _obj + + diff --git a/pyproject.toml b/pyproject.toml index 22eabb24..08a27f53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fireblocks" -version = "25.0.0" +version = "0.0.0" description = "Fireblocks API" authors = ["Fireblocks "] license = "MIT License" diff --git a/setup.py b/setup.py index eae18c19..8e55f57b 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ # prerequisite: setuptools # http://pypi.python.org/pypi/setuptools NAME = "fireblocks" -VERSION = "25.0.0" +VERSION = "0.0.0" PYTHON_REQUIRES = ">= 3.8" REQUIRES = [ "urllib3 >= 2.1.0, < 3.0.0", diff --git a/test/test_add_connected_account_request.py b/test/test_add_connected_account_request.py index edb14a3d..c8b39f05 100644 --- a/test/test_add_connected_account_request.py +++ b/test/test_add_connected_account_request.py @@ -38,7 +38,7 @@ def make_instance(self, include_optional) -> AddConnectedAccountRequest: return AddConnectedAccountRequest( provider_id = 'BINANCE', display_name = 'My Binance Account', - creds = '[B@2c27bba2', + creds = '[B@d6e195f', api_key = 'api_key_abc123', main_account_id = 'acc-parent-001', account_id = 'provider-acc-001', @@ -47,7 +47,7 @@ def make_instance(self, include_optional) -> AddConnectedAccountRequest: else: return AddConnectedAccountRequest( provider_id = 'BINANCE', - creds = '[B@2c27bba2', + creds = '[B@d6e195f', api_key = 'api_key_abc123', ) """ diff --git a/test/test_contract_attributes.py b/test/test_contract_attributes.py index 5192a81a..898dab4e 100644 --- a/test/test_contract_attributes.py +++ b/test/test_contract_attributes.py @@ -49,16 +49,6 @@ def make_instance(self, include_optional) -> ContractAttributes: ) else: return ContractAttributes( - use_cases = [ - '' - ], - standards = [ - '' - ], - auditor = fireblocks.models.auditor_data.AuditorData( - name = '', - image_url = '', - link = '', ), ) """ diff --git a/test/test_travel_rule_get_all_vasps_response.py b/test/test_travel_rule_get_all_vasps_response.py index 1839b503..482a7197 100644 --- a/test/test_travel_rule_get_all_vasps_response.py +++ b/test/test_travel_rule_get_all_vasps_response.py @@ -47,7 +47,7 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: address_line2 = 'Suite 10', city = 'New York', country = 'US', - email_domains = 'fireblocks.com,example.com', + email_domains = '["fireblocks.com", "example.com"]', website = 'https://fireblocks.com', logo = 'https://fireblocks.com/logo.png', legal_structure = 'CORPORATION', @@ -56,16 +56,30 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: incorporation_country = 'US', is_regulated = 'YES', other_names = 'Fireblocks Test VASP', - identification_type = 'Business License', + identification_type = 'OTHER', identification_country = 'US', business_number = '123456789', regulatory_authorities = 'SEC, FINCEN', jurisdictions = 'US, EU', + division = 'Downtown', street = 'Wall Street', number = '10', unit = 'Apt 2B', post_code = '10005', state = 'NY', + other_legal_name = 'SIX Digital Exchange SA, SIX Digital Exchange Ltd', + gleif_updated_at = '2024-07-20T00:00:00.000Z', + lei_number = '9845001C5PA89625E069', + legal_form = 'MVII', + entity_category = 'GENERAL', + entity_status = 'ACTIVE', + external_entity_config = [{"provider":"gleif","externalId":"9845001C5PA89625E069","updatedAt":"2024-07-20T00:00:00Z","resolvedAt":"2024-07-20T13:27:30.929Z"}], + hq_street = 'Hardturmstrasse 201', + hq_number = '201', + hq_postcode = '8005', + hq_region = 'CH-ZH', + hq_city = 'Zurich', + hq_country = 'CH', certificates = 'ISO 27001', description = 'A leading provider of crypto security solutions.', travel_rule_openvasp = 'active', @@ -77,9 +91,9 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: travel_rule_shyft = 'inactive', travel_rule_ustravelrulewg = 'pending', created_at = '2023-09-19T12:23:59.711Z', - created_by = 'admin', + created_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', updated_at = '2024-08-29T08:23:51.416Z', - updated_by = 'system', + updated_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', last_sent_date = '2024-03-18T09:26:07.988Z', last_received_date = '2024-03-20T11:45:30.212Z', documents = '['license.pdf', 'compliance.pdf']', @@ -87,9 +101,13 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: is_notifiable = True, issuers = fireblocks.models.travel_rule_issuers.TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = , name = , logo = , @@ -101,7 +119,30 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: address_line1 = , city = , country = , - description = , ), ) + description = , ), + regulatory_status = 'Regulated', + supervisory_authority = 'FINMA', + registration_license_id = 'LIC-123456', + status_start_date = '2023-01-01T00:00:00.000Z', + status_expiration_date = '2026-01-01T00:00:00.000Z', + last_checked = '2024-07-20T13:27:30.961Z', + additional_information = 'Licensed for custody and exchange services.', + subsidiary_of = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2', + pii_didkey = '86fae05d276b4096a324a1450ed92a6b2c277412bb6a49bce1ed942a0c6726bf', + compliance_phase = 3, + compliance_phase_data = { + 'key' : True + }, + vaspnet_id = 'vaspnet-123456', + vaspnet_updated_at = '2024-07-20T13:27:30.961Z', + vaspnet_immutable_fields = ["legalName"], + node_didkey = 'did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf', + ddq = '{"data":{"fullLegalName":"Fireblocks Inc."},"updatedAt":"2024-11-27T08:59:31.178Z"}', + target_protocol = 'TRLIGHT', + parent_gateway = 'did:ethr:0x79189b9b98c95785702f8ecfe16bbe396479e1a0', + is_active_sender = True, + is_active_receiver = True, + subsidiaries = [], ) ], total = 2, next = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9' @@ -117,7 +158,7 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: address_line2 = 'Suite 10', city = 'New York', country = 'US', - email_domains = 'fireblocks.com,example.com', + email_domains = '["fireblocks.com", "example.com"]', website = 'https://fireblocks.com', logo = 'https://fireblocks.com/logo.png', legal_structure = 'CORPORATION', @@ -126,16 +167,30 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: incorporation_country = 'US', is_regulated = 'YES', other_names = 'Fireblocks Test VASP', - identification_type = 'Business License', + identification_type = 'OTHER', identification_country = 'US', business_number = '123456789', regulatory_authorities = 'SEC, FINCEN', jurisdictions = 'US, EU', + division = 'Downtown', street = 'Wall Street', number = '10', unit = 'Apt 2B', post_code = '10005', state = 'NY', + other_legal_name = 'SIX Digital Exchange SA, SIX Digital Exchange Ltd', + gleif_updated_at = '2024-07-20T00:00:00.000Z', + lei_number = '9845001C5PA89625E069', + legal_form = 'MVII', + entity_category = 'GENERAL', + entity_status = 'ACTIVE', + external_entity_config = [{"provider":"gleif","externalId":"9845001C5PA89625E069","updatedAt":"2024-07-20T00:00:00Z","resolvedAt":"2024-07-20T13:27:30.929Z"}], + hq_street = 'Hardturmstrasse 201', + hq_number = '201', + hq_postcode = '8005', + hq_region = 'CH-ZH', + hq_city = 'Zurich', + hq_country = 'CH', certificates = 'ISO 27001', description = 'A leading provider of crypto security solutions.', travel_rule_openvasp = 'active', @@ -147,9 +202,9 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: travel_rule_shyft = 'inactive', travel_rule_ustravelrulewg = 'pending', created_at = '2023-09-19T12:23:59.711Z', - created_by = 'admin', + created_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', updated_at = '2024-08-29T08:23:51.416Z', - updated_by = 'system', + updated_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', last_sent_date = '2024-03-18T09:26:07.988Z', last_received_date = '2024-03-20T11:45:30.212Z', documents = '['license.pdf', 'compliance.pdf']', @@ -157,9 +212,13 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: is_notifiable = True, issuers = fireblocks.models.travel_rule_issuers.TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = , name = , logo = , @@ -171,7 +230,30 @@ def make_instance(self, include_optional) -> TravelRuleGetAllVASPsResponse: address_line1 = , city = , country = , - description = , ), ) + description = , ), + regulatory_status = 'Regulated', + supervisory_authority = 'FINMA', + registration_license_id = 'LIC-123456', + status_start_date = '2023-01-01T00:00:00.000Z', + status_expiration_date = '2026-01-01T00:00:00.000Z', + last_checked = '2024-07-20T13:27:30.961Z', + additional_information = 'Licensed for custody and exchange services.', + subsidiary_of = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2', + pii_didkey = '86fae05d276b4096a324a1450ed92a6b2c277412bb6a49bce1ed942a0c6726bf', + compliance_phase = 3, + compliance_phase_data = { + 'key' : True + }, + vaspnet_id = 'vaspnet-123456', + vaspnet_updated_at = '2024-07-20T13:27:30.961Z', + vaspnet_immutable_fields = ["legalName"], + node_didkey = 'did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf', + ddq = '{"data":{"fullLegalName":"Fireblocks Inc."},"updatedAt":"2024-11-27T08:59:31.178Z"}', + target_protocol = 'TRLIGHT', + parent_gateway = 'did:ethr:0x79189b9b98c95785702f8ecfe16bbe396479e1a0', + is_active_sender = True, + is_active_receiver = True, + subsidiaries = [], ) ], ) """ diff --git a/test/test_travel_rule_issuer.py b/test/test_travel_rule_issuer.py index 6c85b12e..ec72514c 100644 --- a/test/test_travel_rule_issuer.py +++ b/test/test_travel_rule_issuer.py @@ -36,11 +36,13 @@ def make_instance(self, include_optional) -> TravelRuleIssuer: model = TravelRuleIssuer() if include_optional: return TravelRuleIssuer( - issuer_did = '' + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF' ) else: return TravelRuleIssuer( - issuer_did = '', + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', ) """ diff --git a/test/test_travel_rule_issuers.py b/test/test_travel_rule_issuers.py index 52b7632b..57a657ec 100644 --- a/test/test_travel_rule_issuers.py +++ b/test/test_travel_rule_issuers.py @@ -37,64 +37,120 @@ def make_instance(self, include_optional) -> TravelRuleIssuers: if include_optional: return TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), name = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), logo = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), website = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), legal_name = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), legal_structure = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), incorporation_country = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), business_number = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), address_line1 = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), city = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), country = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), description = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ) + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ) ) else: return TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), name = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), logo = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), website = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), legal_name = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), legal_structure = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), incorporation_country = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), business_number = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), address_line1 = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), city = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), country = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), description = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), ) """ diff --git a/test/test_travel_rule_vasp.py b/test/test_travel_rule_vasp.py index 37be2cab..2249b73b 100644 --- a/test/test_travel_rule_vasp.py +++ b/test/test_travel_rule_vasp.py @@ -43,7 +43,7 @@ def make_instance(self, include_optional) -> TravelRuleVASP: address_line2 = 'Suite 10', city = 'New York', country = 'US', - email_domains = 'fireblocks.com,example.com', + email_domains = '["fireblocks.com", "example.com"]', website = 'https://fireblocks.com', logo = 'https://fireblocks.com/logo.png', legal_structure = 'CORPORATION', @@ -52,16 +52,30 @@ def make_instance(self, include_optional) -> TravelRuleVASP: incorporation_country = 'US', is_regulated = 'YES', other_names = 'Fireblocks Test VASP', - identification_type = 'Business License', + identification_type = 'OTHER', identification_country = 'US', business_number = '123456789', regulatory_authorities = 'SEC, FINCEN', jurisdictions = 'US, EU', + division = 'Downtown', street = 'Wall Street', number = '10', unit = 'Apt 2B', post_code = '10005', state = 'NY', + other_legal_name = 'SIX Digital Exchange SA, SIX Digital Exchange Ltd', + gleif_updated_at = '2024-07-20T00:00:00.000Z', + lei_number = '9845001C5PA89625E069', + legal_form = 'MVII', + entity_category = 'GENERAL', + entity_status = 'ACTIVE', + external_entity_config = [{"provider":"gleif","externalId":"9845001C5PA89625E069","updatedAt":"2024-07-20T00:00:00Z","resolvedAt":"2024-07-20T13:27:30.929Z"}], + hq_street = 'Hardturmstrasse 201', + hq_number = '201', + hq_postcode = '8005', + hq_region = 'CH-ZH', + hq_city = 'Zurich', + hq_country = 'CH', certificates = 'ISO 27001', description = 'A leading provider of crypto security solutions.', travel_rule_openvasp = 'active', @@ -73,9 +87,9 @@ def make_instance(self, include_optional) -> TravelRuleVASP: travel_rule_shyft = 'inactive', travel_rule_ustravelrulewg = 'pending', created_at = '2023-09-19T12:23:59.711Z', - created_by = 'admin', + created_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', updated_at = '2024-08-29T08:23:51.416Z', - updated_by = 'system', + updated_by = 'did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423', last_sent_date = '2024-03-18T09:26:07.988Z', last_received_date = '2024-03-20T11:45:30.212Z', documents = '['license.pdf', 'compliance.pdf']', @@ -83,9 +97,13 @@ def make_instance(self, include_optional) -> TravelRuleVASP: is_notifiable = True, issuers = fireblocks.models.travel_rule_issuers.TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = , name = , logo = , @@ -97,7 +115,30 @@ def make_instance(self, include_optional) -> TravelRuleVASP: address_line1 = , city = , country = , - description = , ) + description = , ), + regulatory_status = 'Regulated', + supervisory_authority = 'FINMA', + registration_license_id = 'LIC-123456', + status_start_date = '2023-01-01T00:00:00.000Z', + status_expiration_date = '2026-01-01T00:00:00.000Z', + last_checked = '2024-07-20T13:27:30.961Z', + additional_information = 'Licensed for custody and exchange services.', + subsidiary_of = 'did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2', + pii_didkey = '86fae05d276b4096a324a1450ed92a6b2c277412bb6a49bce1ed942a0c6726bf', + compliance_phase = 3, + compliance_phase_data = { + 'key' : True + }, + vaspnet_id = 'vaspnet-123456', + vaspnet_updated_at = '2024-07-20T13:27:30.961Z', + vaspnet_immutable_fields = ["legalName"], + node_didkey = 'did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf', + ddq = '{"data":{"fullLegalName":"Fireblocks Inc."},"updatedAt":"2024-11-27T08:59:31.178Z"}', + target_protocol = 'TRLIGHT', + parent_gateway = 'did:ethr:0x79189b9b98c95785702f8ecfe16bbe396479e1a0', + is_active_sender = True, + is_active_receiver = True, + subsidiaries = [] ) else: return TravelRuleVASP( @@ -107,7 +148,7 @@ def make_instance(self, include_optional) -> TravelRuleVASP: address_line1 = '657 Campfire Street', city = 'New York', country = 'US', - email_domains = 'fireblocks.com,example.com', + email_domains = '["fireblocks.com", "example.com"]', website = 'https://fireblocks.com', legal_structure = 'CORPORATION', legal_name = 'Fireblocks Inc.', @@ -121,9 +162,13 @@ def make_instance(self, include_optional) -> TravelRuleVASP: is_notifiable = True, issuers = fireblocks.models.travel_rule_issuers.TravelRuleIssuers( year_founded = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), is_regulated = fireblocks.models.travel_rule_issuer.TravelRuleIssuer( - issuer_did = '', ), + issuer_did = 'did:ethr:0x7947578140ed0fa32cb025d9ad9a6c6e72c52686', + issued_date = '2024-07-20T13:27:30.958Z', + issuer_name = 'GLEIF', ), regulatory_authorities = , name = , logo = , diff --git a/test/test_travel_rule_vasp_external_entity.py b/test/test_travel_rule_vasp_external_entity.py new file mode 100644 index 00000000..f9d0e479 --- /dev/null +++ b/test/test_travel_rule_vasp_external_entity.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" +Fireblocks API + +Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + +The version of the OpenAPI document: 1.6.2 +Contact: developers@fireblocks.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from fireblocks.models.travel_rule_vasp_external_entity import ( + TravelRuleVASPExternalEntity, +) + + +class TestTravelRuleVASPExternalEntity(unittest.TestCase): + """TravelRuleVASPExternalEntity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TravelRuleVASPExternalEntity: + """Test TravelRuleVASPExternalEntity + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TravelRuleVASPExternalEntity` + """ + model = TravelRuleVASPExternalEntity() + if include_optional: + return TravelRuleVASPExternalEntity( + legal_name = 'Fireblocks Inc.', + other_legal_name = 'SIX Digital Exchange SA, SIX Digital Exchange Ltd', + legal_form = 'MVII', + legal_structure = 'MVII', + entity_category = 'GENERAL', + entity_status = 'ACTIVE', + business_number = 'CHE-449.145.067', + year_founded = '2018', + jurisdictions = 'CH', + address_line1 = 'Hardturmstrasse 201', + number = '201', + post_code = '8005', + city = 'Zurich', + state = 'CH-ZH', + country = 'CH', + hq_street = 'Hardturmstrasse 201', + hq_number = '201', + hq_postcode = '8005', + hq_city = 'Zurich', + hq_region = 'CH-ZH', + hq_country = 'CH' + ) + else: + return TravelRuleVASPExternalEntity( + ) + """ + + def testTravelRuleVASPExternalEntity(self): + """Test TravelRuleVASPExternalEntity""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_travel_rule_vasp_external_entity_config.py b/test/test_travel_rule_vasp_external_entity_config.py new file mode 100644 index 00000000..aa52313c --- /dev/null +++ b/test/test_travel_rule_vasp_external_entity_config.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Fireblocks API + +Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + +The version of the OpenAPI document: 1.6.2 +Contact: developers@fireblocks.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from fireblocks.models.travel_rule_vasp_external_entity_config import ( + TravelRuleVASPExternalEntityConfig, +) + + +class TestTravelRuleVASPExternalEntityConfig(unittest.TestCase): + """TravelRuleVASPExternalEntityConfig unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TravelRuleVASPExternalEntityConfig: + """Test TravelRuleVASPExternalEntityConfig + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TravelRuleVASPExternalEntityConfig` + """ + model = TravelRuleVASPExternalEntityConfig() + if include_optional: + return TravelRuleVASPExternalEntityConfig( + provider = 'gleif', + external_id = '9845001C5PA89625E069', + updated_at = '2024-07-20T00:00:00Z', + resolved_at = '2024-07-20T13:27:30.929Z', + entity = fireblocks.models.travel_rule_vasp_external_entity.TravelRuleVASPExternalEntity( + legal_name = 'Fireblocks Inc.', + other_legal_name = 'SIX Digital Exchange SA, SIX Digital Exchange Ltd', + legal_form = 'MVII', + legal_structure = 'MVII', + entity_category = 'GENERAL', + entity_status = 'ACTIVE', + business_number = 'CHE-449.145.067', + year_founded = '2018', + jurisdictions = 'CH', + address_line1 = 'Hardturmstrasse 201', + number = '201', + post_code = '8005', + city = 'Zurich', + state = 'CH-ZH', + country = 'CH', + hq_street = 'Hardturmstrasse 201', + hq_number = '201', + hq_postcode = '8005', + hq_city = 'Zurich', + hq_region = 'CH-ZH', + hq_country = 'CH', ), + registration = fireblocks.models.travel_rule_vasp_external_entity_registration.TravelRuleVASPExternalEntityRegistration( + status = 'ISSUED', + next_renewal_date = '2026-05-19T12:41:57Z', + corroboration_level = 'FULLY_CORROBORATED', ) + ) + else: + return TravelRuleVASPExternalEntityConfig( + ) + """ + + def testTravelRuleVASPExternalEntityConfig(self): + """Test TravelRuleVASPExternalEntityConfig""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_travel_rule_vasp_external_entity_registration.py b/test/test_travel_rule_vasp_external_entity_registration.py new file mode 100644 index 00000000..40a92e63 --- /dev/null +++ b/test/test_travel_rule_vasp_external_entity_registration.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Fireblocks API + +Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + +The version of the OpenAPI document: 1.6.2 +Contact: developers@fireblocks.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from fireblocks.models.travel_rule_vasp_external_entity_registration import ( + TravelRuleVASPExternalEntityRegistration, +) + + +class TestTravelRuleVASPExternalEntityRegistration(unittest.TestCase): + """TravelRuleVASPExternalEntityRegistration unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance( + self, include_optional + ) -> TravelRuleVASPExternalEntityRegistration: + """Test TravelRuleVASPExternalEntityRegistration + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TravelRuleVASPExternalEntityRegistration` + """ + model = TravelRuleVASPExternalEntityRegistration() + if include_optional: + return TravelRuleVASPExternalEntityRegistration( + status = 'ISSUED', + next_renewal_date = '2026-05-19T12:41:57Z', + corroboration_level = 'FULLY_CORROBORATED' + ) + else: + return TravelRuleVASPExternalEntityRegistration( + ) + """ + + def testTravelRuleVASPExternalEntityRegistration(self): + """Test TravelRuleVASPExternalEntityRegistration""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main()