graphsense-python 2.10.0__py3-none-any.whl → 2.12.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. graphsense/__init__.py +12 -2
  2. graphsense/api/__init__.py +1 -0
  3. graphsense/api/addresses_api.py +310 -7
  4. graphsense/api/blocks_api.py +1 -1
  5. graphsense/api/bulk_api.py +1 -1
  6. graphsense/api/clusters_api.py +2767 -0
  7. graphsense/api/entities_api.py +19 -13
  8. graphsense/api/general_api.py +1 -1
  9. graphsense/api/rates_api.py +1 -1
  10. graphsense/api/tags_api.py +1 -1
  11. graphsense/api/tokens_api.py +1 -1
  12. graphsense/api/txs_api.py +1 -1
  13. graphsense/api_client.py +2 -2
  14. graphsense/cli/__init__.py +1 -0
  15. graphsense/cli/__main__.py +4 -0
  16. graphsense/cli/bulk_cmd.py +95 -0
  17. graphsense/cli/context.py +64 -0
  18. graphsense/cli/convenience.py +444 -0
  19. graphsense/cli/errors.py +74 -0
  20. graphsense/cli/main.py +216 -0
  21. graphsense/cli/raw.py +259 -0
  22. graphsense/configuration.py +3 -3
  23. graphsense/exceptions.py +1 -1
  24. graphsense/ext/__init__.py +6 -0
  25. graphsense/ext/bulk.py +51 -0
  26. graphsense/ext/client.py +517 -0
  27. graphsense/ext/deprecation.py +81 -0
  28. graphsense/ext/io.py +238 -0
  29. graphsense/ext/output.py +245 -0
  30. graphsense/ext/selectors.py +28 -0
  31. graphsense/models/__init__.py +5 -1
  32. graphsense/models/actor.py +1 -1
  33. graphsense/models/actor_context.py +1 -1
  34. graphsense/models/address.py +10 -6
  35. graphsense/models/address_output.py +1 -1
  36. graphsense/models/address_tag.py +9 -5
  37. graphsense/models/address_tags.py +1 -1
  38. graphsense/models/address_tx.py +1 -1
  39. graphsense/models/address_tx_utxo.py +1 -1
  40. graphsense/models/address_txs.py +1 -1
  41. graphsense/models/block.py +1 -1
  42. graphsense/models/block_at_date.py +1 -1
  43. graphsense/models/change_heuristics.py +1 -1
  44. graphsense/models/cluster.py +140 -0
  45. graphsense/models/cluster_addresses.py +96 -0
  46. graphsense/models/coin_join_consensus.py +1 -1
  47. graphsense/models/coin_join_heuristics.py +1 -1
  48. graphsense/models/concept.py +1 -1
  49. graphsense/models/consensus_entry.py +1 -1
  50. graphsense/models/currency_stats.py +1 -1
  51. graphsense/models/direct_change_heuristic.py +1 -1
  52. graphsense/models/entity.py +2 -2
  53. graphsense/models/entity_addresses.py +2 -2
  54. graphsense/models/external_conversion.py +1 -1
  55. graphsense/models/http_validation_error.py +1 -1
  56. graphsense/models/join_market_heuristic.py +1 -1
  57. graphsense/models/label_summary.py +1 -1
  58. graphsense/models/labeled_item_ref.py +1 -1
  59. graphsense/models/link.py +1 -1
  60. graphsense/models/link_utxo.py +1 -1
  61. graphsense/models/links.py +1 -1
  62. graphsense/models/links_inner.py +1 -1
  63. graphsense/models/location_inner.py +1 -1
  64. graphsense/models/multi_input_change_heuristic.py +1 -1
  65. graphsense/models/neighbor_address.py +1 -1
  66. graphsense/models/neighbor_addresses.py +1 -1
  67. graphsense/models/neighbor_cluster.py +120 -0
  68. graphsense/models/neighbor_clusters.py +96 -0
  69. graphsense/models/neighbor_entities.py +2 -2
  70. graphsense/models/neighbor_entity.py +10 -4
  71. graphsense/models/one_time_change_heuristic.py +1 -1
  72. graphsense/models/rate.py +1 -1
  73. graphsense/models/rates.py +1 -1
  74. graphsense/models/related_address.py +1 -1
  75. graphsense/models/related_addresses.py +1 -1
  76. graphsense/models/search_result.py +1 -1
  77. graphsense/models/search_result_by_currency.py +1 -1
  78. graphsense/models/search_result_level1.py +1 -1
  79. graphsense/models/search_result_level2.py +1 -1
  80. graphsense/models/search_result_level3.py +1 -1
  81. graphsense/models/search_result_level4.py +1 -1
  82. graphsense/models/search_result_level5.py +1 -1
  83. graphsense/models/search_result_level6.py +1 -1
  84. graphsense/models/stats.py +1 -1
  85. graphsense/models/tag.py +1 -1
  86. graphsense/models/tag_cloud_entry.py +1 -1
  87. graphsense/models/tag_summary.py +1 -1
  88. graphsense/models/taxonomy.py +1 -1
  89. graphsense/models/token_config.py +1 -1
  90. graphsense/models/token_configs.py +1 -1
  91. graphsense/models/tx.py +1 -1
  92. graphsense/models/tx_account.py +1 -1
  93. graphsense/models/tx_ref.py +1 -1
  94. graphsense/models/tx_summary.py +1 -1
  95. graphsense/models/tx_utxo.py +1 -1
  96. graphsense/models/tx_value.py +1 -1
  97. graphsense/models/user_reported_tag.py +1 -1
  98. graphsense/models/user_tag_report_response.py +1 -1
  99. graphsense/models/utxo_heuristics.py +1 -1
  100. graphsense/models/validation_error.py +1 -1
  101. graphsense/models/values.py +1 -1
  102. graphsense/models/wasabi_heuristic.py +1 -1
  103. graphsense/models/whirlpool_coin_join_heuristic.py +1 -1
  104. graphsense/models/whirlpool_tx0_heuristic.py +1 -1
  105. graphsense/rest.py +1 -1
  106. {graphsense_python-2.10.0.dist-info → graphsense_python-2.12.0.dist-info}/METADATA +67 -18
  107. graphsense_python-2.12.0.dist-info/RECORD +170 -0
  108. graphsense_python-2.12.0.dist-info/entry_points.txt +2 -0
  109. graphsense_python-2.10.0.dist-info/RECORD +0 -149
  110. {graphsense_python-2.10.0.dist-info → graphsense_python-2.12.0.dist-info}/WHEEL +0 -0
  111. {graphsense_python-2.10.0.dist-info → graphsense_python-2.12.0.dist-info}/top_level.txt +0 -0
graphsense/__init__.py CHANGED
@@ -5,20 +5,21 @@
5
5
  """
6
6
  GraphSense API
7
7
 
8
- GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, entities, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. # noqa: E501
8
+ GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, clusters, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. ## Versioning and deprecation policy The API follows semantic versioning. Minor releases are additive and backwards-compatible; breaking changes only happen in major releases, which are rare and announced in advance. Deprecated endpoints and fields remain fully functional for at least six months after they are marked deprecated. During that window they are highlighted with a strikethrough in the docs and in generated clients, and responses from deprecated endpoints carry a `Deprecation` HTTP header that client tooling can detect. Replacement endpoints and fields are always introduced before the deprecated surface is removed. See the [full versioning and deprecation policy](https://github.com/graphsense/graphsense-lib/blob/master/README.md#rest-api-evolution-and-deprecation-policy) for details. # noqa: E501
9
9
 
10
10
  Contact: contact@iknaio.com
11
11
  Generated by: https://openapi-generator.tech
12
12
  """
13
13
 
14
14
 
15
- __version__ = "2.10.0"
15
+ __version__ = "2.12.0"
16
16
 
17
17
  # Define package exports
18
18
  __all__ = [
19
19
  "AddressesApi",
20
20
  "BlocksApi",
21
21
  "BulkApi",
22
+ "ClustersApi",
22
23
  "EntitiesApi",
23
24
  "GeneralApi",
24
25
  "RatesApi",
@@ -46,6 +47,8 @@ __all__ = [
46
47
  "Block",
47
48
  "BlockAtDate",
48
49
  "ChangeHeuristics",
50
+ "Cluster",
51
+ "ClusterAddresses",
49
52
  "CoinJoinConsensus",
50
53
  "CoinJoinHeuristics",
51
54
  "Concept",
@@ -67,6 +70,8 @@ __all__ = [
67
70
  "MultiInputChangeHeuristic",
68
71
  "NeighborAddress",
69
72
  "NeighborAddresses",
73
+ "NeighborCluster",
74
+ "NeighborClusters",
70
75
  "NeighborEntities",
71
76
  "NeighborEntity",
72
77
  "OneTimeChangeHeuristic",
@@ -112,6 +117,7 @@ import graphsense.compat # noqa: F401
112
117
  from graphsense.api.addresses_api import AddressesApi as AddressesApi
113
118
  from graphsense.api.blocks_api import BlocksApi as BlocksApi
114
119
  from graphsense.api.bulk_api import BulkApi as BulkApi
120
+ from graphsense.api.clusters_api import ClustersApi as ClustersApi
115
121
  from graphsense.api.entities_api import EntitiesApi as EntitiesApi
116
122
  from graphsense.api.general_api import GeneralApi as GeneralApi
117
123
  from graphsense.api.rates_api import RatesApi as RatesApi
@@ -143,6 +149,8 @@ from graphsense.models.address_txs import AddressTxs as AddressTxs
143
149
  from graphsense.models.block import Block as Block
144
150
  from graphsense.models.block_at_date import BlockAtDate as BlockAtDate
145
151
  from graphsense.models.change_heuristics import ChangeHeuristics as ChangeHeuristics
152
+ from graphsense.models.cluster import Cluster as Cluster
153
+ from graphsense.models.cluster_addresses import ClusterAddresses as ClusterAddresses
146
154
  from graphsense.models.coin_join_consensus import CoinJoinConsensus as CoinJoinConsensus
147
155
  from graphsense.models.coin_join_heuristics import CoinJoinHeuristics as CoinJoinHeuristics
148
156
  from graphsense.models.concept import Concept as Concept
@@ -164,6 +172,8 @@ from graphsense.models.location_inner import LocationInner as LocationInner
164
172
  from graphsense.models.multi_input_change_heuristic import MultiInputChangeHeuristic as MultiInputChangeHeuristic
165
173
  from graphsense.models.neighbor_address import NeighborAddress as NeighborAddress
166
174
  from graphsense.models.neighbor_addresses import NeighborAddresses as NeighborAddresses
175
+ from graphsense.models.neighbor_cluster import NeighborCluster as NeighborCluster
176
+ from graphsense.models.neighbor_clusters import NeighborClusters as NeighborClusters
167
177
  from graphsense.models.neighbor_entities import NeighborEntities as NeighborEntities
168
178
  from graphsense.models.neighbor_entity import NeighborEntity as NeighborEntity
169
179
  from graphsense.models.one_time_change_heuristic import OneTimeChangeHeuristic as OneTimeChangeHeuristic
@@ -4,6 +4,7 @@
4
4
  from graphsense.api.addresses_api import AddressesApi
5
5
  from graphsense.api.blocks_api import BlocksApi
6
6
  from graphsense.api.bulk_api import BulkApi
7
+ from graphsense.api.clusters_api import ClustersApi
7
8
  from graphsense.api.entities_api import EntitiesApi
8
9
  from graphsense.api.general_api import GeneralApi
9
10
  from graphsense.api.rates_api import RatesApi
@@ -3,7 +3,7 @@
3
3
  """
4
4
  GraphSense API
5
5
 
6
- GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, entities, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. # noqa: E501
6
+ GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, clusters, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. ## Versioning and deprecation policy The API follows semantic versioning. Minor releases are additive and backwards-compatible; breaking changes only happen in major releases, which are rare and announced in advance. Deprecated endpoints and fields remain fully functional for at least six months after they are marked deprecated. During that window they are highlighted with a strikethrough in the docs and in generated clients, and responses from deprecated endpoints carry a `Deprecation` HTTP header that client tooling can detect. Replacement endpoints and fields are always introduced before the deprecated surface is removed. See the [full versioning and deprecation policy](https://github.com/graphsense/graphsense-lib/blob/master/README.md#rest-api-evolution-and-deprecation-policy) for details. # noqa: E501
7
7
 
8
8
  Contact: contact@iknaio.com
9
9
  Generated by: https://openapi-generator.tech
@@ -20,6 +20,7 @@ from typing_extensions import Annotated
20
20
  from graphsense.models.address import Address
21
21
  from graphsense.models.address_tags import AddressTags
22
22
  from graphsense.models.address_txs import AddressTxs
23
+ from graphsense.models.cluster import Cluster
23
24
  from graphsense.models.entity import Entity
24
25
  from graphsense.models.links import Links
25
26
  from graphsense.models.neighbor_addresses import NeighborAddresses
@@ -433,6 +434,305 @@ class AddressesApi:
433
434
 
434
435
 
435
436
 
437
+ @validate_call_compat
438
+ def get_address_cluster(
439
+ self,
440
+ currency: Annotated[StrictStr, Field(description="The cryptocurrency code (e.g., btc)")],
441
+ address: Annotated[StrictStr, Field(description="The cryptocurrency address")],
442
+ include_actors: Annotated[Optional[StrictBool], Field(description="Whether to include actor information")] = None,
443
+ _request_timeout: Union[
444
+ None,
445
+ Annotated[StrictFloat, Field(gt=0)],
446
+ Tuple[
447
+ Annotated[StrictFloat, Field(gt=0)],
448
+ Annotated[StrictFloat, Field(gt=0)]
449
+ ]
450
+ ] = None,
451
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
452
+ _content_type: Optional[StrictStr] = None,
453
+ _headers: Optional[Dict[StrictStr, Any]] = None,
454
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
455
+ ) -> Cluster:
456
+ """Get the cluster for an address
457
+
458
+ Returns the address cluster that contains the given address.
459
+
460
+ :param currency: The cryptocurrency code (e.g., btc) (required)
461
+ :type currency: str
462
+ :param address: The cryptocurrency address (required)
463
+ :type address: str
464
+ :param include_actors: Whether to include actor information
465
+ :type include_actors: bool
466
+ :param _request_timeout: timeout setting for this request. If one
467
+ number provided, it will be total request
468
+ timeout. It can also be a pair (tuple) of
469
+ (connection, read) timeouts.
470
+ :type _request_timeout: int, tuple(int, int), optional
471
+ :param _request_auth: set to override the auth_settings for an a single
472
+ request; this effectively ignores the
473
+ authentication in the spec for a single request.
474
+ :type _request_auth: dict, optional
475
+ :param _content_type: force content-type for the request.
476
+ :type _content_type: str, Optional
477
+ :param _headers: set to override the headers for a single
478
+ request; this effectively ignores the headers
479
+ in the spec for a single request.
480
+ :type _headers: dict, optional
481
+ :param _host_index: set to override the host_index for a single
482
+ request; this effectively ignores the host_index
483
+ in the spec for a single request.
484
+ :type _host_index: int, optional
485
+ :return: Returns the result object.
486
+ """ # noqa: E501
487
+
488
+ _param = self._get_address_cluster_serialize(
489
+ currency=currency,
490
+ address=address,
491
+ include_actors=include_actors,
492
+ _request_auth=_request_auth,
493
+ _content_type=_content_type,
494
+ _headers=_headers,
495
+ _host_index=_host_index
496
+ )
497
+
498
+ _response_types_map: Dict[str, Optional[str]] = {
499
+ '200': "Cluster",
500
+ '404': None,
501
+ '422': "HTTPValidationError",
502
+ }
503
+ response_data = self.api_client.call_api(
504
+ *_param,
505
+ _request_timeout=_request_timeout
506
+ )
507
+ response_data.read()
508
+ return self.api_client.response_deserialize(
509
+ response_data=response_data,
510
+ response_types_map=_response_types_map,
511
+ ).data
512
+
513
+
514
+ @validate_call_compat
515
+ def get_address_cluster_with_http_info(
516
+ self,
517
+ currency: Annotated[StrictStr, Field(description="The cryptocurrency code (e.g., btc)")],
518
+ address: Annotated[StrictStr, Field(description="The cryptocurrency address")],
519
+ include_actors: Annotated[Optional[StrictBool], Field(description="Whether to include actor information")] = None,
520
+ _request_timeout: Union[
521
+ None,
522
+ Annotated[StrictFloat, Field(gt=0)],
523
+ Tuple[
524
+ Annotated[StrictFloat, Field(gt=0)],
525
+ Annotated[StrictFloat, Field(gt=0)]
526
+ ]
527
+ ] = None,
528
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
529
+ _content_type: Optional[StrictStr] = None,
530
+ _headers: Optional[Dict[StrictStr, Any]] = None,
531
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
532
+ ) -> ApiResponse[Cluster]:
533
+ """Get the cluster for an address
534
+
535
+ Returns the address cluster that contains the given address.
536
+
537
+ :param currency: The cryptocurrency code (e.g., btc) (required)
538
+ :type currency: str
539
+ :param address: The cryptocurrency address (required)
540
+ :type address: str
541
+ :param include_actors: Whether to include actor information
542
+ :type include_actors: bool
543
+ :param _request_timeout: timeout setting for this request. If one
544
+ number provided, it will be total request
545
+ timeout. It can also be a pair (tuple) of
546
+ (connection, read) timeouts.
547
+ :type _request_timeout: int, tuple(int, int), optional
548
+ :param _request_auth: set to override the auth_settings for an a single
549
+ request; this effectively ignores the
550
+ authentication in the spec for a single request.
551
+ :type _request_auth: dict, optional
552
+ :param _content_type: force content-type for the request.
553
+ :type _content_type: str, Optional
554
+ :param _headers: set to override the headers for a single
555
+ request; this effectively ignores the headers
556
+ in the spec for a single request.
557
+ :type _headers: dict, optional
558
+ :param _host_index: set to override the host_index for a single
559
+ request; this effectively ignores the host_index
560
+ in the spec for a single request.
561
+ :type _host_index: int, optional
562
+ :return: Returns the result object.
563
+ """ # noqa: E501
564
+
565
+ _param = self._get_address_cluster_serialize(
566
+ currency=currency,
567
+ address=address,
568
+ include_actors=include_actors,
569
+ _request_auth=_request_auth,
570
+ _content_type=_content_type,
571
+ _headers=_headers,
572
+ _host_index=_host_index
573
+ )
574
+
575
+ _response_types_map: Dict[str, Optional[str]] = {
576
+ '200': "Cluster",
577
+ '404': None,
578
+ '422': "HTTPValidationError",
579
+ }
580
+ response_data = self.api_client.call_api(
581
+ *_param,
582
+ _request_timeout=_request_timeout
583
+ )
584
+ response_data.read()
585
+ return self.api_client.response_deserialize(
586
+ response_data=response_data,
587
+ response_types_map=_response_types_map,
588
+ )
589
+
590
+
591
+ @validate_call_compat
592
+ def get_address_cluster_without_preload_content(
593
+ self,
594
+ currency: Annotated[StrictStr, Field(description="The cryptocurrency code (e.g., btc)")],
595
+ address: Annotated[StrictStr, Field(description="The cryptocurrency address")],
596
+ include_actors: Annotated[Optional[StrictBool], Field(description="Whether to include actor information")] = None,
597
+ _request_timeout: Union[
598
+ None,
599
+ Annotated[StrictFloat, Field(gt=0)],
600
+ Tuple[
601
+ Annotated[StrictFloat, Field(gt=0)],
602
+ Annotated[StrictFloat, Field(gt=0)]
603
+ ]
604
+ ] = None,
605
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
606
+ _content_type: Optional[StrictStr] = None,
607
+ _headers: Optional[Dict[StrictStr, Any]] = None,
608
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
609
+ ) -> RESTResponseType:
610
+ """Get the cluster for an address
611
+
612
+ Returns the address cluster that contains the given address.
613
+
614
+ :param currency: The cryptocurrency code (e.g., btc) (required)
615
+ :type currency: str
616
+ :param address: The cryptocurrency address (required)
617
+ :type address: str
618
+ :param include_actors: Whether to include actor information
619
+ :type include_actors: bool
620
+ :param _request_timeout: timeout setting for this request. If one
621
+ number provided, it will be total request
622
+ timeout. It can also be a pair (tuple) of
623
+ (connection, read) timeouts.
624
+ :type _request_timeout: int, tuple(int, int), optional
625
+ :param _request_auth: set to override the auth_settings for an a single
626
+ request; this effectively ignores the
627
+ authentication in the spec for a single request.
628
+ :type _request_auth: dict, optional
629
+ :param _content_type: force content-type for the request.
630
+ :type _content_type: str, Optional
631
+ :param _headers: set to override the headers for a single
632
+ request; this effectively ignores the headers
633
+ in the spec for a single request.
634
+ :type _headers: dict, optional
635
+ :param _host_index: set to override the host_index for a single
636
+ request; this effectively ignores the host_index
637
+ in the spec for a single request.
638
+ :type _host_index: int, optional
639
+ :return: Returns the result object.
640
+ """ # noqa: E501
641
+
642
+ _param = self._get_address_cluster_serialize(
643
+ currency=currency,
644
+ address=address,
645
+ include_actors=include_actors,
646
+ _request_auth=_request_auth,
647
+ _content_type=_content_type,
648
+ _headers=_headers,
649
+ _host_index=_host_index
650
+ )
651
+
652
+ _response_types_map: Dict[str, Optional[str]] = {
653
+ '200': "Cluster",
654
+ '404': None,
655
+ '422': "HTTPValidationError",
656
+ }
657
+ response_data = self.api_client.call_api(
658
+ *_param,
659
+ _request_timeout=_request_timeout
660
+ )
661
+ return response_data.response
662
+
663
+
664
+ def _get_address_cluster_serialize(
665
+ self,
666
+ currency,
667
+ address,
668
+ include_actors,
669
+ _request_auth,
670
+ _content_type,
671
+ _headers,
672
+ _host_index,
673
+ ) -> RequestSerialized:
674
+
675
+ _host = None
676
+
677
+ _collection_formats: Dict[str, str] = {
678
+ }
679
+
680
+ _path_params: Dict[str, str] = {}
681
+ _query_params: List[Tuple[str, str]] = []
682
+ _header_params: Dict[str, Optional[str]] = _headers or {}
683
+ _form_params: List[Tuple[str, str]] = []
684
+ _files: Dict[
685
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
686
+ ] = {}
687
+ _body_params: Optional[bytes] = None
688
+
689
+ # process the path parameters
690
+ if currency is not None:
691
+ _path_params['currency'] = currency
692
+ if address is not None:
693
+ _path_params['address'] = address
694
+ # process the query parameters
695
+ if include_actors is not None:
696
+
697
+ _query_params.append(('include_actors', include_actors))
698
+
699
+ # process the header parameters
700
+ # process the form parameters
701
+ # process the body parameter
702
+
703
+
704
+ # set the HTTP header `Accept`
705
+ if 'Accept' not in _header_params:
706
+ _header_params['Accept'] = self.api_client.select_header_accept(
707
+ [
708
+ 'application/json'
709
+ ]
710
+ )
711
+
712
+
713
+ # authentication setting
714
+ _auth_settings: List[str] = [
715
+ 'api_key'
716
+ ]
717
+
718
+ return self.api_client.param_serialize(
719
+ method='GET',
720
+ resource_path='/{currency}/addresses/{address}/cluster',
721
+ path_params=_path_params,
722
+ query_params=_query_params,
723
+ header_params=_header_params,
724
+ body=_body_params,
725
+ post_params=_form_params,
726
+ files=_files,
727
+ auth_settings=_auth_settings,
728
+ collection_formats=_collection_formats,
729
+ _host=_host,
730
+ _request_auth=_request_auth
731
+ )
732
+
733
+
734
+
735
+
436
736
  @validate_call_compat
437
737
  def get_address_entity(
438
738
  self,
@@ -452,9 +752,9 @@ class AddressesApi:
452
752
  _headers: Optional[Dict[StrictStr, Any]] = None,
453
753
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
454
754
  ) -> Entity:
455
- """Get the entity for an address
755
+ """(Deprecated) Get the entity for an address
456
756
 
457
- Returns the clustered entity that contains the given address.
757
+ Deprecated alias for `GET /{currency}/addresses/{address}/cluster`. Returns the address cluster that contains the given address.
458
758
 
459
759
  :param currency: The cryptocurrency code (e.g., btc) (required)
460
760
  :type currency: str
@@ -483,6 +783,7 @@ class AddressesApi:
483
783
  :type _host_index: int, optional
484
784
  :return: Returns the result object.
485
785
  """ # noqa: E501
786
+ warnings.warn("GET /{currency}/addresses/{address}/entity is deprecated.", DeprecationWarning)
486
787
 
487
788
  _param = self._get_address_entity_serialize(
488
789
  currency=currency,
@@ -529,9 +830,9 @@ class AddressesApi:
529
830
  _headers: Optional[Dict[StrictStr, Any]] = None,
530
831
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
531
832
  ) -> ApiResponse[Entity]:
532
- """Get the entity for an address
833
+ """(Deprecated) Get the entity for an address
533
834
 
534
- Returns the clustered entity that contains the given address.
835
+ Deprecated alias for `GET /{currency}/addresses/{address}/cluster`. Returns the address cluster that contains the given address.
535
836
 
536
837
  :param currency: The cryptocurrency code (e.g., btc) (required)
537
838
  :type currency: str
@@ -560,6 +861,7 @@ class AddressesApi:
560
861
  :type _host_index: int, optional
561
862
  :return: Returns the result object.
562
863
  """ # noqa: E501
864
+ warnings.warn("GET /{currency}/addresses/{address}/entity is deprecated.", DeprecationWarning)
563
865
 
564
866
  _param = self._get_address_entity_serialize(
565
867
  currency=currency,
@@ -606,9 +908,9 @@ class AddressesApi:
606
908
  _headers: Optional[Dict[StrictStr, Any]] = None,
607
909
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
608
910
  ) -> RESTResponseType:
609
- """Get the entity for an address
911
+ """(Deprecated) Get the entity for an address
610
912
 
611
- Returns the clustered entity that contains the given address.
913
+ Deprecated alias for `GET /{currency}/addresses/{address}/cluster`. Returns the address cluster that contains the given address.
612
914
 
613
915
  :param currency: The cryptocurrency code (e.g., btc) (required)
614
916
  :type currency: str
@@ -637,6 +939,7 @@ class AddressesApi:
637
939
  :type _host_index: int, optional
638
940
  :return: Returns the result object.
639
941
  """ # noqa: E501
942
+ warnings.warn("GET /{currency}/addresses/{address}/entity is deprecated.", DeprecationWarning)
640
943
 
641
944
  _param = self._get_address_entity_serialize(
642
945
  currency=currency,
@@ -3,7 +3,7 @@
3
3
  """
4
4
  GraphSense API
5
5
 
6
- GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, entities, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. # noqa: E501
6
+ GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, clusters, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. ## Versioning and deprecation policy The API follows semantic versioning. Minor releases are additive and backwards-compatible; breaking changes only happen in major releases, which are rare and announced in advance. Deprecated endpoints and fields remain fully functional for at least six months after they are marked deprecated. During that window they are highlighted with a strikethrough in the docs and in generated clients, and responses from deprecated endpoints carry a `Deprecation` HTTP header that client tooling can detect. Replacement endpoints and fields are always introduced before the deprecated surface is removed. See the [full versioning and deprecation policy](https://github.com/graphsense/graphsense-lib/blob/master/README.md#rest-api-evolution-and-deprecation-policy) for details. # noqa: E501
7
7
 
8
8
  Contact: contact@iknaio.com
9
9
  Generated by: https://openapi-generator.tech
@@ -3,7 +3,7 @@
3
3
  """
4
4
  GraphSense API
5
5
 
6
- GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, entities, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. # noqa: E501
6
+ GraphSense API provides programmatic access to blockchain analytics data across multiple ledgers. Use it to explore addresses, clusters, blocks, transactions, tags, token activity, and exchange-rate context, and to integrate investigation workflows into your own applications and automation. ## Versioning and deprecation policy The API follows semantic versioning. Minor releases are additive and backwards-compatible; breaking changes only happen in major releases, which are rare and announced in advance. Deprecated endpoints and fields remain fully functional for at least six months after they are marked deprecated. During that window they are highlighted with a strikethrough in the docs and in generated clients, and responses from deprecated endpoints carry a `Deprecation` HTTP header that client tooling can detect. Replacement endpoints and fields are always introduced before the deprecated surface is removed. See the [full versioning and deprecation policy](https://github.com/graphsense/graphsense-lib/blob/master/README.md#rest-api-evolution-and-deprecation-policy) for details. # noqa: E501
7
7
 
8
8
  Contact: contact@iknaio.com
9
9
  Generated by: https://openapi-generator.tech