From 0812f2163205be4e48486f201ab979b78593e9a1 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 29 May 2025 15:19:20 +0000
Subject: [PATCH 1/2] feat(api): update via SDK Studio
---
.stats.yml | 8 +-
api.md | 14 +-
src/coingecko_python/resources/coins/coins.py | 14 ++
.../resources/coins/tickers.py | 12 ++
.../resources/exchanges/exchanges.py | 26 ++-
.../resources/exchanges/tickers.py | 12 ++
.../resources/onchain/networks/pools/multi.py | 20 +-
.../resources/onchain/networks/pools/ohlcv.py | 8 +
.../resources/onchain/networks/pools/pools.py | 22 +-
.../onchain/networks/tokens/__init__.py | 14 ++
.../onchain/networks/tokens/tokens.py | 32 +++
.../onchain/networks/tokens/trades.py | 193 ++++++++++++++++++
src/coingecko_python/types/__init__.py | 1 +
.../types/coin_get_id_params.py | 8 +-
.../types/coins/ticker_get_params.py | 6 +
.../types/exchange_get_id_params.py | 15 ++
.../types/exchanges/ticker_get_params.py | 6 +
.../networks/dex_get_pools_response.py | 14 --
.../networks/new_pool_get_network_response.py | 14 --
.../onchain/networks/new_pool_get_response.py | 14 --
.../networks/pool_get_address_params.py | 3 +
.../networks/pool_get_address_response.py | 4 +
.../onchain/networks/pool_get_response.py | 14 --
.../networks/pools/info_get_response.py | 11 +
.../pools/multi_get_addresses_params.py | 3 +
.../pools/multi_get_addresses_response.py | 4 +
.../pools/ohlcv_get_timeframe_params.py | 3 +
.../networks/token_get_address_response.py | 2 +
.../types/onchain/networks/tokens/__init__.py | 2 +
.../networks/tokens/info_get_response.py | 11 +
.../tokens/multi_get_addresses_response.py | 2 +
.../networks/tokens/pool_get_response.py | 14 --
.../networks/tokens/trade_get_params.py | 14 ++
.../networks/tokens/trade_get_response.py | 53 +++++
.../trending_pool_get_network_response.py | 14 --
.../networks/trending_pool_get_response.py | 14 --
.../onchain/pools/megafilter_get_response.py | 14 --
.../types/onchain/search/pool_get_response.py | 14 --
tests/api_resources/coins/test_tickers.py | 2 +
tests/api_resources/exchanges/test_tickers.py | 2 +
.../onchain/networks/pools/test_multi.py | 2 +
.../onchain/networks/pools/test_ohlcv.py | 2 +
.../onchain/networks/test_pools.py | 2 +
.../onchain/networks/tokens/test_trades.py | 146 +++++++++++++
tests/api_resources/test_coins.py | 2 +
tests/api_resources/test_exchanges.py | 34 ++-
46 files changed, 694 insertions(+), 147 deletions(-)
create mode 100644 src/coingecko_python/resources/onchain/networks/tokens/trades.py
create mode 100644 src/coingecko_python/types/exchange_get_id_params.py
create mode 100644 src/coingecko_python/types/onchain/networks/tokens/trade_get_params.py
create mode 100644 src/coingecko_python/types/onchain/networks/tokens/trade_get_response.py
create mode 100644 tests/api_resources/onchain/networks/tokens/test_trades.py
diff --git a/.stats.yml b/.stats.yml
index 5308838..bd57530 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 76
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko%2Fcoingecko-927a6b126ae13cbcde1cb8818c390ce13f838d7802e51bd9ceb1920893c46470.yml
-openapi_spec_hash: 0c29bd602dbc3fb5a226320a3fd0f9d9
-config_hash: 1cc0bc621ce857d41500f93783460439
+configured_endpoints: 77
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko%2Fcoingecko-672da434b7c16835742e7051aa49aa7c953646ea384ead8b64fcbfd611c9dc13.yml
+openapi_spec_hash: 8c8c984aa692011f8b7b5f62d9ad3211
+config_hash: ee0fcee03e9f9b77015be66024d42405
diff --git a/api.md b/api.md
index a390aa8..afa2153 100644
--- a/api.md
+++ b/api.md
@@ -253,7 +253,7 @@ from coingecko_python.types import (
Methods:
- client.exchanges.get(\*\*params) -> ExchangeGetResponse
-- client.exchanges.get_id(id) -> ExchangeGetIDResponse
+- client.exchanges.get_id(id, \*\*params) -> ExchangeGetIDResponse
- client.exchanges.get_list(\*\*params) -> ExchangeGetListResponse
## Tickers
@@ -581,6 +581,18 @@ Methods:
- client.onchain.networks.tokens.pools.get(token_address, \*, network, \*\*params) -> PoolGetResponse
+#### Trades
+
+Types:
+
+```python
+from coingecko_python.types.onchain.networks.tokens import TradeGetResponse
+```
+
+Methods:
+
+- client.onchain.networks.tokens.trades.get(token_address, \*, network, \*\*params) -> TradeGetResponse
+
## Pools
### Megafilter
diff --git a/src/coingecko_python/resources/coins/coins.py b/src/coingecko_python/resources/coins/coins.py
index 9c3c1a8..6aa25d1 100644
--- a/src/coingecko_python/resources/coins/coins.py
+++ b/src/coingecko_python/resources/coins/coins.py
@@ -2,6 +2,8 @@
from __future__ import annotations
+from typing_extensions import Literal
+
import httpx
from .list import (
@@ -179,6 +181,7 @@ def get_id(
*,
community_data: bool | NotGiven = NOT_GIVEN,
developer_data: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
localization: bool | NotGiven = NOT_GIVEN,
market_data: bool | NotGiven = NOT_GIVEN,
sparkline: bool | NotGiven = NOT_GIVEN,
@@ -201,6 +204,10 @@ def get_id(
developer_data: include developer data, default: true
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
localization: include all the localized languages in the response, default: true
market_data: include market data, default: true
@@ -230,6 +237,7 @@ def get_id(
{
"community_data": community_data,
"developer_data": developer_data,
+ "dex_pair_format": dex_pair_format,
"localization": localization,
"market_data": market_data,
"sparkline": sparkline,
@@ -312,6 +320,7 @@ async def get_id(
*,
community_data: bool | NotGiven = NOT_GIVEN,
developer_data: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
localization: bool | NotGiven = NOT_GIVEN,
market_data: bool | NotGiven = NOT_GIVEN,
sparkline: bool | NotGiven = NOT_GIVEN,
@@ -334,6 +343,10 @@ async def get_id(
developer_data: include developer data, default: true
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
localization: include all the localized languages in the response, default: true
market_data: include market data, default: true
@@ -363,6 +376,7 @@ async def get_id(
{
"community_data": community_data,
"developer_data": developer_data,
+ "dex_pair_format": dex_pair_format,
"localization": localization,
"market_data": market_data,
"sparkline": sparkline,
diff --git a/src/coingecko_python/resources/coins/tickers.py b/src/coingecko_python/resources/coins/tickers.py
index f2bc4ab..307b9bb 100644
--- a/src/coingecko_python/resources/coins/tickers.py
+++ b/src/coingecko_python/resources/coins/tickers.py
@@ -48,6 +48,7 @@ def get(
id: str,
*,
depth: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
exchange_ids: str | NotGiven = NOT_GIVEN,
include_exchange_logo: bool | NotGiven = NOT_GIVEN,
order: Literal["trust_score_desc", "trust_score_asc", "volume_desc", "volume_asc"] | NotGiven = NOT_GIVEN,
@@ -67,6 +68,10 @@ def get(
depth: include 2% orderbook depth, ie. `cost_to_move_up_usd` and
`cost_to_move_down_usd` Default: false
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
exchange_ids: exchange ID \\**refers to [`/exchanges/list`](/reference/exchanges-list).
include_exchange_logo: include exchange logo, default: false
@@ -95,6 +100,7 @@ def get(
query=maybe_transform(
{
"depth": depth,
+ "dex_pair_format": dex_pair_format,
"exchange_ids": exchange_ids,
"include_exchange_logo": include_exchange_logo,
"order": order,
@@ -132,6 +138,7 @@ async def get(
id: str,
*,
depth: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
exchange_ids: str | NotGiven = NOT_GIVEN,
include_exchange_logo: bool | NotGiven = NOT_GIVEN,
order: Literal["trust_score_desc", "trust_score_asc", "volume_desc", "volume_asc"] | NotGiven = NOT_GIVEN,
@@ -151,6 +158,10 @@ async def get(
depth: include 2% orderbook depth, ie. `cost_to_move_up_usd` and
`cost_to_move_down_usd` Default: false
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
exchange_ids: exchange ID \\**refers to [`/exchanges/list`](/reference/exchanges-list).
include_exchange_logo: include exchange logo, default: false
@@ -179,6 +190,7 @@ async def get(
query=await async_maybe_transform(
{
"depth": depth,
+ "dex_pair_format": dex_pair_format,
"exchange_ids": exchange_ids,
"include_exchange_logo": include_exchange_logo,
"order": order,
diff --git a/src/coingecko_python/resources/exchanges/exchanges.py b/src/coingecko_python/resources/exchanges/exchanges.py
index 60a0917..8be5afc 100644
--- a/src/coingecko_python/resources/exchanges/exchanges.py
+++ b/src/coingecko_python/resources/exchanges/exchanges.py
@@ -6,7 +6,7 @@
import httpx
-from ...types import exchange_get_params, exchange_get_list_params
+from ...types import exchange_get_params, exchange_get_id_params, exchange_get_list_params
from .tickers import (
TickersResource,
AsyncTickersResource,
@@ -120,6 +120,7 @@ def get_id(
self,
id: str,
*,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -133,6 +134,10 @@ def get_id(
ID**
Args:
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -146,7 +151,11 @@ def get_id(
return self._get(
f"/exchanges/{id}",
options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform({"dex_pair_format": dex_pair_format}, exchange_get_id_params.ExchangeGetIDParams),
),
cast_to=ExchangeGetIDResponse,
)
@@ -268,6 +277,7 @@ async def get_id(
self,
id: str,
*,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -281,6 +291,10 @@ async def get_id(
ID**
Args:
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -294,7 +308,13 @@ async def get_id(
return await self._get(
f"/exchanges/{id}",
options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=await async_maybe_transform(
+ {"dex_pair_format": dex_pair_format}, exchange_get_id_params.ExchangeGetIDParams
+ ),
),
cast_to=ExchangeGetIDResponse,
)
diff --git a/src/coingecko_python/resources/exchanges/tickers.py b/src/coingecko_python/resources/exchanges/tickers.py
index 62fa222..a144beb 100644
--- a/src/coingecko_python/resources/exchanges/tickers.py
+++ b/src/coingecko_python/resources/exchanges/tickers.py
@@ -49,6 +49,7 @@ def get(
*,
coin_ids: str | NotGiven = NOT_GIVEN,
depth: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
include_exchange_logo: bool | NotGiven = NOT_GIVEN,
order: Literal["trust_score_desc", "trust_score_asc", "volume_desc", "volume_asc", "base_target"]
| NotGiven = NOT_GIVEN,
@@ -70,6 +71,10 @@ def get(
depth: include 2% orderbook depth (Example: cost_to_move_up_usd &
cost_to_move_down_usd),default: false
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
include_exchange_logo: include exchange logo, default: false
order: use this to sort the order of responses, default: trust_score_desc
@@ -97,6 +102,7 @@ def get(
{
"coin_ids": coin_ids,
"depth": depth,
+ "dex_pair_format": dex_pair_format,
"include_exchange_logo": include_exchange_logo,
"order": order,
"page": page,
@@ -134,6 +140,7 @@ async def get(
*,
coin_ids: str | NotGiven = NOT_GIVEN,
depth: bool | NotGiven = NOT_GIVEN,
+ dex_pair_format: Literal["contract_address", "symbol"] | NotGiven = NOT_GIVEN,
include_exchange_logo: bool | NotGiven = NOT_GIVEN,
order: Literal["trust_score_desc", "trust_score_asc", "volume_desc", "volume_asc", "base_target"]
| NotGiven = NOT_GIVEN,
@@ -155,6 +162,10 @@ async def get(
depth: include 2% orderbook depth (Example: cost_to_move_up_usd &
cost_to_move_down_usd),default: false
+ dex_pair_format:
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+
include_exchange_logo: include exchange logo, default: false
order: use this to sort the order of responses, default: trust_score_desc
@@ -182,6 +193,7 @@ async def get(
{
"coin_ids": coin_ids,
"depth": depth,
+ "dex_pair_format": dex_pair_format,
"include_exchange_logo": include_exchange_logo,
"order": order,
"page": page,
diff --git a/src/coingecko_python/resources/onchain/networks/pools/multi.py b/src/coingecko_python/resources/onchain/networks/pools/multi.py
index 6753c40..73a2f5c 100644
--- a/src/coingecko_python/resources/onchain/networks/pools/multi.py
+++ b/src/coingecko_python/resources/onchain/networks/pools/multi.py
@@ -47,6 +47,7 @@ def get_addresses(
*,
network: str,
include: str | NotGiven = NOT_GIVEN,
+ include_volume_breakdown: bool | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -62,6 +63,8 @@ def get_addresses(
include: attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
+ include_volume_breakdown: include volume breakdown, default: false
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -81,7 +84,13 @@ def get_addresses(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- query=maybe_transform({"include": include}, multi_get_addresses_params.MultiGetAddressesParams),
+ query=maybe_transform(
+ {
+ "include": include,
+ "include_volume_breakdown": include_volume_breakdown,
+ },
+ multi_get_addresses_params.MultiGetAddressesParams,
+ ),
),
cast_to=MultiGetAddressesResponse,
)
@@ -113,6 +122,7 @@ async def get_addresses(
*,
network: str,
include: str | NotGiven = NOT_GIVEN,
+ include_volume_breakdown: bool | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -128,6 +138,8 @@ async def get_addresses(
include: attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
+ include_volume_breakdown: include volume breakdown, default: false
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -148,7 +160,11 @@ async def get_addresses(
extra_body=extra_body,
timeout=timeout,
query=await async_maybe_transform(
- {"include": include}, multi_get_addresses_params.MultiGetAddressesParams
+ {
+ "include": include,
+ "include_volume_breakdown": include_volume_breakdown,
+ },
+ multi_get_addresses_params.MultiGetAddressesParams,
),
),
cast_to=MultiGetAddressesResponse,
diff --git a/src/coingecko_python/resources/onchain/networks/pools/ohlcv.py b/src/coingecko_python/resources/onchain/networks/pools/ohlcv.py
index ae69326..7a601f5 100644
--- a/src/coingecko_python/resources/onchain/networks/pools/ohlcv.py
+++ b/src/coingecko_python/resources/onchain/networks/pools/ohlcv.py
@@ -53,6 +53,7 @@ def get_timeframe(
aggregate: str | NotGiven = NOT_GIVEN,
before_timestamp: int | NotGiven = NOT_GIVEN,
currency: Literal["usd", "token"] | NotGiven = NOT_GIVEN,
+ include_empty_intervals: bool | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -77,6 +78,8 @@ def get_timeframe(
currency: return OHLCV in USD or quote token Default value: usd
+ include_empty_intervals: include empty intervals with no trade data, default: false
+
limit: number of OHLCV results to return, maximum 1000 Default value: 100
extra_headers: Send extra headers
@@ -106,6 +109,7 @@ def get_timeframe(
"aggregate": aggregate,
"before_timestamp": before_timestamp,
"currency": currency,
+ "include_empty_intervals": include_empty_intervals,
"limit": limit,
},
ohlcv_get_timeframe_params.OhlcvGetTimeframeParams,
@@ -145,6 +149,7 @@ async def get_timeframe(
aggregate: str | NotGiven = NOT_GIVEN,
before_timestamp: int | NotGiven = NOT_GIVEN,
currency: Literal["usd", "token"] | NotGiven = NOT_GIVEN,
+ include_empty_intervals: bool | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -169,6 +174,8 @@ async def get_timeframe(
currency: return OHLCV in USD or quote token Default value: usd
+ include_empty_intervals: include empty intervals with no trade data, default: false
+
limit: number of OHLCV results to return, maximum 1000 Default value: 100
extra_headers: Send extra headers
@@ -198,6 +205,7 @@ async def get_timeframe(
"aggregate": aggregate,
"before_timestamp": before_timestamp,
"currency": currency,
+ "include_empty_intervals": include_empty_intervals,
"limit": limit,
},
ohlcv_get_timeframe_params.OhlcvGetTimeframeParams,
diff --git a/src/coingecko_python/resources/onchain/networks/pools/pools.py b/src/coingecko_python/resources/onchain/networks/pools/pools.py
index cec1805..ce02ad8 100644
--- a/src/coingecko_python/resources/onchain/networks/pools/pools.py
+++ b/src/coingecko_python/resources/onchain/networks/pools/pools.py
@@ -153,6 +153,7 @@ def get_address(
*,
network: str,
include: str | NotGiven = NOT_GIVEN,
+ include_volume_breakdown: bool | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -168,6 +169,8 @@ def get_address(
include: attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
+ include_volume_breakdown: include volume breakdown, default: false
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -187,7 +190,13 @@ def get_address(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- query=maybe_transform({"include": include}, pool_get_address_params.PoolGetAddressParams),
+ query=maybe_transform(
+ {
+ "include": include,
+ "include_volume_breakdown": include_volume_breakdown,
+ },
+ pool_get_address_params.PoolGetAddressParams,
+ ),
),
cast_to=PoolGetAddressResponse,
)
@@ -290,6 +299,7 @@ async def get_address(
*,
network: str,
include: str | NotGiven = NOT_GIVEN,
+ include_volume_breakdown: bool | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -305,6 +315,8 @@ async def get_address(
include: attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
+ include_volume_breakdown: include volume breakdown, default: false
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -324,7 +336,13 @@ async def get_address(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- query=await async_maybe_transform({"include": include}, pool_get_address_params.PoolGetAddressParams),
+ query=await async_maybe_transform(
+ {
+ "include": include,
+ "include_volume_breakdown": include_volume_breakdown,
+ },
+ pool_get_address_params.PoolGetAddressParams,
+ ),
),
cast_to=PoolGetAddressResponse,
)
diff --git a/src/coingecko_python/resources/onchain/networks/tokens/__init__.py b/src/coingecko_python/resources/onchain/networks/tokens/__init__.py
index 62396b9..932a845 100644
--- a/src/coingecko_python/resources/onchain/networks/tokens/__init__.py
+++ b/src/coingecko_python/resources/onchain/networks/tokens/__init__.py
@@ -32,6 +32,14 @@
TokensResourceWithStreamingResponse,
AsyncTokensResourceWithStreamingResponse,
)
+from .trades import (
+ TradesResource,
+ AsyncTradesResource,
+ TradesResourceWithRawResponse,
+ AsyncTradesResourceWithRawResponse,
+ TradesResourceWithStreamingResponse,
+ AsyncTradesResourceWithStreamingResponse,
+)
from .top_holders import (
TopHoldersResource,
AsyncTopHoldersResource,
@@ -66,6 +74,12 @@
"AsyncPoolsResourceWithRawResponse",
"PoolsResourceWithStreamingResponse",
"AsyncPoolsResourceWithStreamingResponse",
+ "TradesResource",
+ "AsyncTradesResource",
+ "TradesResourceWithRawResponse",
+ "AsyncTradesResourceWithRawResponse",
+ "TradesResourceWithStreamingResponse",
+ "AsyncTradesResourceWithStreamingResponse",
"TokensResource",
"AsyncTokensResource",
"TokensResourceWithRawResponse",
diff --git a/src/coingecko_python/resources/onchain/networks/tokens/tokens.py b/src/coingecko_python/resources/onchain/networks/tokens/tokens.py
index ff52c99..27fa6c6 100644
--- a/src/coingecko_python/resources/onchain/networks/tokens/tokens.py
+++ b/src/coingecko_python/resources/onchain/networks/tokens/tokens.py
@@ -30,6 +30,14 @@
PoolsResourceWithStreamingResponse,
AsyncPoolsResourceWithStreamingResponse,
)
+from .trades import (
+ TradesResource,
+ AsyncTradesResource,
+ TradesResourceWithRawResponse,
+ AsyncTradesResourceWithRawResponse,
+ TradesResourceWithStreamingResponse,
+ AsyncTradesResourceWithStreamingResponse,
+)
from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ....._utils import maybe_transform, async_maybe_transform
from ....._compat import cached_property
@@ -72,6 +80,10 @@ def top_holders(self) -> TopHoldersResource:
def pools(self) -> PoolsResource:
return PoolsResource(self._client)
+ @cached_property
+ def trades(self) -> TradesResource:
+ return TradesResource(self._client)
+
@cached_property
def with_raw_response(self) -> TokensResourceWithRawResponse:
"""
@@ -153,6 +165,10 @@ def top_holders(self) -> AsyncTopHoldersResource:
def pools(self) -> AsyncPoolsResource:
return AsyncPoolsResource(self._client)
+ @cached_property
+ def trades(self) -> AsyncTradesResource:
+ return AsyncTradesResource(self._client)
+
@cached_property
def with_raw_response(self) -> AsyncTokensResourceWithRawResponse:
"""
@@ -241,6 +257,10 @@ def top_holders(self) -> TopHoldersResourceWithRawResponse:
def pools(self) -> PoolsResourceWithRawResponse:
return PoolsResourceWithRawResponse(self._tokens.pools)
+ @cached_property
+ def trades(self) -> TradesResourceWithRawResponse:
+ return TradesResourceWithRawResponse(self._tokens.trades)
+
class AsyncTokensResourceWithRawResponse:
def __init__(self, tokens: AsyncTokensResource) -> None:
@@ -266,6 +286,10 @@ def top_holders(self) -> AsyncTopHoldersResourceWithRawResponse:
def pools(self) -> AsyncPoolsResourceWithRawResponse:
return AsyncPoolsResourceWithRawResponse(self._tokens.pools)
+ @cached_property
+ def trades(self) -> AsyncTradesResourceWithRawResponse:
+ return AsyncTradesResourceWithRawResponse(self._tokens.trades)
+
class TokensResourceWithStreamingResponse:
def __init__(self, tokens: TokensResource) -> None:
@@ -291,6 +315,10 @@ def top_holders(self) -> TopHoldersResourceWithStreamingResponse:
def pools(self) -> PoolsResourceWithStreamingResponse:
return PoolsResourceWithStreamingResponse(self._tokens.pools)
+ @cached_property
+ def trades(self) -> TradesResourceWithStreamingResponse:
+ return TradesResourceWithStreamingResponse(self._tokens.trades)
+
class AsyncTokensResourceWithStreamingResponse:
def __init__(self, tokens: AsyncTokensResource) -> None:
@@ -315,3 +343,7 @@ def top_holders(self) -> AsyncTopHoldersResourceWithStreamingResponse:
@cached_property
def pools(self) -> AsyncPoolsResourceWithStreamingResponse:
return AsyncPoolsResourceWithStreamingResponse(self._tokens.pools)
+
+ @cached_property
+ def trades(self) -> AsyncTradesResourceWithStreamingResponse:
+ return AsyncTradesResourceWithStreamingResponse(self._tokens.trades)
diff --git a/src/coingecko_python/resources/onchain/networks/tokens/trades.py b/src/coingecko_python/resources/onchain/networks/tokens/trades.py
new file mode 100644
index 0000000..b7e9574
--- /dev/null
+++ b/src/coingecko_python/resources/onchain/networks/tokens/trades.py
@@ -0,0 +1,193 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import httpx
+
+from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
+from ....._utils import maybe_transform, async_maybe_transform
+from ....._compat import cached_property
+from ....._resource import SyncAPIResource, AsyncAPIResource
+from ....._response import (
+ to_raw_response_wrapper,
+ to_streamed_response_wrapper,
+ async_to_raw_response_wrapper,
+ async_to_streamed_response_wrapper,
+)
+from ....._base_client import make_request_options
+from .....types.onchain.networks.tokens import trade_get_params
+from .....types.onchain.networks.tokens.trade_get_response import TradeGetResponse
+
+__all__ = ["TradesResource", "AsyncTradesResource"]
+
+
+class TradesResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> TradesResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/coingecko/coingecko-python#accessing-raw-response-data-eg-headers
+ """
+ return TradesResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> TradesResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/coingecko/coingecko-python#with_streaming_response
+ """
+ return TradesResourceWithStreamingResponse(self)
+
+ def get(
+ self,
+ token_address: str,
+ *,
+ network: str,
+ trade_volume_in_usd_greater_than: float | NotGiven = NOT_GIVEN,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> TradeGetResponse:
+ """
+ This endpoint allows you to **query the last 300 trades in the past 24 hours
+ based on the provided token contract address on a network**
+
+ Args:
+ trade_volume_in_usd_greater_than: filter trades by trade volume in USD greater than this value Default value: 0
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not network:
+ raise ValueError(f"Expected a non-empty value for `network` but received {network!r}")
+ if not token_address:
+ raise ValueError(f"Expected a non-empty value for `token_address` but received {token_address!r}")
+ return self._get(
+ f"/onchain/networks/{network}/tokens/{token_address}/trades",
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {"trade_volume_in_usd_greater_than": trade_volume_in_usd_greater_than},
+ trade_get_params.TradeGetParams,
+ ),
+ ),
+ cast_to=TradeGetResponse,
+ )
+
+
+class AsyncTradesResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncTradesResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/coingecko/coingecko-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncTradesResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncTradesResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/coingecko/coingecko-python#with_streaming_response
+ """
+ return AsyncTradesResourceWithStreamingResponse(self)
+
+ async def get(
+ self,
+ token_address: str,
+ *,
+ network: str,
+ trade_volume_in_usd_greater_than: float | NotGiven = NOT_GIVEN,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
+ ) -> TradeGetResponse:
+ """
+ This endpoint allows you to **query the last 300 trades in the past 24 hours
+ based on the provided token contract address on a network**
+
+ Args:
+ trade_volume_in_usd_greater_than: filter trades by trade volume in USD greater than this value Default value: 0
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not network:
+ raise ValueError(f"Expected a non-empty value for `network` but received {network!r}")
+ if not token_address:
+ raise ValueError(f"Expected a non-empty value for `token_address` but received {token_address!r}")
+ return await self._get(
+ f"/onchain/networks/{network}/tokens/{token_address}/trades",
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=await async_maybe_transform(
+ {"trade_volume_in_usd_greater_than": trade_volume_in_usd_greater_than},
+ trade_get_params.TradeGetParams,
+ ),
+ ),
+ cast_to=TradeGetResponse,
+ )
+
+
+class TradesResourceWithRawResponse:
+ def __init__(self, trades: TradesResource) -> None:
+ self._trades = trades
+
+ self.get = to_raw_response_wrapper(
+ trades.get,
+ )
+
+
+class AsyncTradesResourceWithRawResponse:
+ def __init__(self, trades: AsyncTradesResource) -> None:
+ self._trades = trades
+
+ self.get = async_to_raw_response_wrapper(
+ trades.get,
+ )
+
+
+class TradesResourceWithStreamingResponse:
+ def __init__(self, trades: TradesResource) -> None:
+ self._trades = trades
+
+ self.get = to_streamed_response_wrapper(
+ trades.get,
+ )
+
+
+class AsyncTradesResourceWithStreamingResponse:
+ def __init__(self, trades: AsyncTradesResource) -> None:
+ self._trades = trades
+
+ self.get = async_to_streamed_response_wrapper(
+ trades.get,
+ )
diff --git a/src/coingecko_python/types/__init__.py b/src/coingecko_python/types/__init__.py
index b5439dc..73219ac 100644
--- a/src/coingecko_python/types/__init__.py
+++ b/src/coingecko_python/types/__init__.py
@@ -14,6 +14,7 @@
from .coin_get_id_response import CoinGetIDResponse as CoinGetIDResponse
from .exchange_get_response import ExchangeGetResponse as ExchangeGetResponse
from .nft_get_list_response import NFTGetListResponse as NFTGetListResponse
+from .exchange_get_id_params import ExchangeGetIDParams as ExchangeGetIDParams
from .nft_get_markets_params import NFTGetMarketsParams as NFTGetMarketsParams
from .derivative_get_response import DerivativeGetResponse as DerivativeGetResponse
from .exchange_get_id_response import ExchangeGetIDResponse as ExchangeGetIDResponse
diff --git a/src/coingecko_python/types/coin_get_id_params.py b/src/coingecko_python/types/coin_get_id_params.py
index 4745c33..20712d7 100644
--- a/src/coingecko_python/types/coin_get_id_params.py
+++ b/src/coingecko_python/types/coin_get_id_params.py
@@ -2,7 +2,7 @@
from __future__ import annotations
-from typing_extensions import TypedDict
+from typing_extensions import Literal, TypedDict
__all__ = ["CoinGetIDParams"]
@@ -14,6 +14,12 @@ class CoinGetIDParams(TypedDict, total=False):
developer_data: bool
"""include developer data, default: true"""
+ dex_pair_format: Literal["contract_address", "symbol"]
+ """
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+ """
+
localization: bool
"""include all the localized languages in the response, default: true"""
diff --git a/src/coingecko_python/types/coins/ticker_get_params.py b/src/coingecko_python/types/coins/ticker_get_params.py
index bb64b84..facd4b1 100644
--- a/src/coingecko_python/types/coins/ticker_get_params.py
+++ b/src/coingecko_python/types/coins/ticker_get_params.py
@@ -14,6 +14,12 @@ class TickerGetParams(TypedDict, total=False):
`cost_to_move_up_usd` and `cost_to_move_down_usd` Default: false
"""
+ dex_pair_format: Literal["contract_address", "symbol"]
+ """
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+ """
+
exchange_ids: str
"""exchange ID \\**refers to [`/exchanges/list`](/reference/exchanges-list)."""
diff --git a/src/coingecko_python/types/exchange_get_id_params.py b/src/coingecko_python/types/exchange_get_id_params.py
new file mode 100644
index 0000000..bb44def
--- /dev/null
+++ b/src/coingecko_python/types/exchange_get_id_params.py
@@ -0,0 +1,15 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal, TypedDict
+
+__all__ = ["ExchangeGetIDParams"]
+
+
+class ExchangeGetIDParams(TypedDict, total=False):
+ dex_pair_format: Literal["contract_address", "symbol"]
+ """
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+ """
diff --git a/src/coingecko_python/types/exchanges/ticker_get_params.py b/src/coingecko_python/types/exchanges/ticker_get_params.py
index 1017f0d..acf86e5 100644
--- a/src/coingecko_python/types/exchanges/ticker_get_params.py
+++ b/src/coingecko_python/types/exchanges/ticker_get_params.py
@@ -20,6 +20,12 @@ class TickerGetParams(TypedDict, total=False):
cost_to_move_down_usd),default: false
"""
+ dex_pair_format: Literal["contract_address", "symbol"]
+ """
+ set to `symbol` to display DEX pair base and target as symbols, default:
+ `contract_address`
+ """
+
include_exchange_logo: bool
"""include exchange logo, default: false"""
diff --git a/src/coingecko_python/types/onchain/networks/dex_get_pools_response.py b/src/coingecko_python/types/onchain/networks/dex_get_pools_response.py
index 99b9614..421338f 100644
--- a/src/coingecko_python/types/onchain/networks/dex_get_pools_response.py
+++ b/src/coingecko_python/types/onchain/networks/dex_get_pools_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/new_pool_get_network_response.py b/src/coingecko_python/types/onchain/networks/new_pool_get_network_response.py
index b70f953..bf7c7fe 100644
--- a/src/coingecko_python/types/onchain/networks/new_pool_get_network_response.py
+++ b/src/coingecko_python/types/onchain/networks/new_pool_get_network_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/new_pool_get_response.py b/src/coingecko_python/types/onchain/networks/new_pool_get_response.py
index 1b42369..369ee8f 100644
--- a/src/coingecko_python/types/onchain/networks/new_pool_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/new_pool_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/pool_get_address_params.py b/src/coingecko_python/types/onchain/networks/pool_get_address_params.py
index 24e5a46..627d38c 100644
--- a/src/coingecko_python/types/onchain/networks/pool_get_address_params.py
+++ b/src/coingecko_python/types/onchain/networks/pool_get_address_params.py
@@ -15,3 +15,6 @@ class PoolGetAddressParams(TypedDict, total=False):
attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
"""
+
+ include_volume_breakdown: bool
+ """include volume breakdown, default: false"""
diff --git a/src/coingecko_python/types/onchain/networks/pool_get_address_response.py b/src/coingecko_python/types/onchain/networks/pool_get_address_response.py
index 713e24f..9c8bac7 100644
--- a/src/coingecko_python/types/onchain/networks/pool_get_address_response.py
+++ b/src/coingecko_python/types/onchain/networks/pool_get_address_response.py
@@ -146,6 +146,10 @@ class DataAttributes(BaseModel):
pool_created_at: Optional[str] = None
+ pool_fee_percentage: Optional[str] = None
+
+ pool_name: Optional[str] = None
+
price_change_percentage: Optional[DataAttributesPriceChangePercentage] = None
quote_token_price_base_token: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/pool_get_response.py b/src/coingecko_python/types/onchain/networks/pool_get_response.py
index b2d3866..42c8178 100644
--- a/src/coingecko_python/types/onchain/networks/pool_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/pool_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/pools/info_get_response.py b/src/coingecko_python/types/onchain/networks/pools/info_get_response.py
index 80a9f60..c08edbe 100644
--- a/src/coingecko_python/types/onchain/networks/pools/info_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/pools/info_get_response.py
@@ -13,6 +13,7 @@
"DataAttributesGtScoreDetails",
"DataAttributesHolders",
"DataAttributesHoldersDistributionPercentage",
+ "DataAttributesImage",
]
@@ -46,6 +47,14 @@ class DataAttributesHolders(BaseModel):
last_updated: Optional[str] = None
+class DataAttributesImage(BaseModel):
+ large: Optional[str] = None
+
+ small: Optional[str] = None
+
+ thumb: Optional[str] = None
+
+
class DataAttributes(BaseModel):
address: Optional[str] = None
@@ -67,6 +76,8 @@ class DataAttributes(BaseModel):
holders: Optional[DataAttributesHolders] = None
+ image: Optional[DataAttributesImage] = None
+
image_url: Optional[str] = None
mint_authority: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_params.py b/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_params.py
index 8867b69..8457ba1 100644
--- a/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_params.py
+++ b/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_params.py
@@ -15,3 +15,6 @@ class MultiGetAddressesParams(TypedDict, total=False):
attributes to include, comma-separated if more than one to include Available
values: `base_token`, `quote_token`, `dex`
"""
+
+ include_volume_breakdown: bool
+ """include volume breakdown, default: false"""
diff --git a/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_response.py b/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_response.py
index 4874859..cfabb17 100644
--- a/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_response.py
+++ b/src/coingecko_python/types/onchain/networks/pools/multi_get_addresses_response.py
@@ -146,6 +146,10 @@ class DataAttributes(BaseModel):
pool_created_at: Optional[str] = None
+ pool_fee_percentage: Optional[str] = None
+
+ pool_name: Optional[str] = None
+
price_change_percentage: Optional[DataAttributesPriceChangePercentage] = None
quote_token_price_base_token: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/pools/ohlcv_get_timeframe_params.py b/src/coingecko_python/types/onchain/networks/pools/ohlcv_get_timeframe_params.py
index dce0bfa..dd577c0 100644
--- a/src/coingecko_python/types/onchain/networks/pools/ohlcv_get_timeframe_params.py
+++ b/src/coingecko_python/types/onchain/networks/pools/ohlcv_get_timeframe_params.py
@@ -31,5 +31,8 @@ class OhlcvGetTimeframeParams(TypedDict, total=False):
currency: Literal["usd", "token"]
"""return OHLCV in USD or quote token Default value: usd"""
+ include_empty_intervals: bool
+ """include empty intervals with no trade data, default: false"""
+
limit: int
"""number of OHLCV results to return, maximum 1000 Default value: 100"""
diff --git a/src/coingecko_python/types/onchain/networks/token_get_address_response.py b/src/coingecko_python/types/onchain/networks/token_get_address_response.py
index 1f1364e..b9cb7f0 100644
--- a/src/coingecko_python/types/onchain/networks/token_get_address_response.py
+++ b/src/coingecko_python/types/onchain/networks/token_get_address_response.py
@@ -51,6 +51,8 @@ class DataAttributes(BaseModel):
name: Optional[str] = None
+ normalized_total_supply: Optional[str] = None
+
price_usd: Optional[str] = None
symbol: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/tokens/__init__.py b/src/coingecko_python/types/onchain/networks/tokens/__init__.py
index 276f706..d21db66 100644
--- a/src/coingecko_python/types/onchain/networks/tokens/__init__.py
+++ b/src/coingecko_python/types/onchain/networks/tokens/__init__.py
@@ -3,8 +3,10 @@
from __future__ import annotations
from .pool_get_params import PoolGetParams as PoolGetParams
+from .trade_get_params import TradeGetParams as TradeGetParams
from .info_get_response import InfoGetResponse as InfoGetResponse
from .pool_get_response import PoolGetResponse as PoolGetResponse
+from .trade_get_response import TradeGetResponse as TradeGetResponse
from .top_holder_get_params import TopHolderGetParams as TopHolderGetParams
from .top_holder_get_response import TopHolderGetResponse as TopHolderGetResponse
from .multi_get_addresses_params import MultiGetAddressesParams as MultiGetAddressesParams
diff --git a/src/coingecko_python/types/onchain/networks/tokens/info_get_response.py b/src/coingecko_python/types/onchain/networks/tokens/info_get_response.py
index 80a9f60..c08edbe 100644
--- a/src/coingecko_python/types/onchain/networks/tokens/info_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/tokens/info_get_response.py
@@ -13,6 +13,7 @@
"DataAttributesGtScoreDetails",
"DataAttributesHolders",
"DataAttributesHoldersDistributionPercentage",
+ "DataAttributesImage",
]
@@ -46,6 +47,14 @@ class DataAttributesHolders(BaseModel):
last_updated: Optional[str] = None
+class DataAttributesImage(BaseModel):
+ large: Optional[str] = None
+
+ small: Optional[str] = None
+
+ thumb: Optional[str] = None
+
+
class DataAttributes(BaseModel):
address: Optional[str] = None
@@ -67,6 +76,8 @@ class DataAttributes(BaseModel):
holders: Optional[DataAttributesHolders] = None
+ image: Optional[DataAttributesImage] = None
+
image_url: Optional[str] = None
mint_authority: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/tokens/multi_get_addresses_response.py b/src/coingecko_python/types/onchain/networks/tokens/multi_get_addresses_response.py
index eb5fb0d..47fe449 100644
--- a/src/coingecko_python/types/onchain/networks/tokens/multi_get_addresses_response.py
+++ b/src/coingecko_python/types/onchain/networks/tokens/multi_get_addresses_response.py
@@ -51,6 +51,8 @@ class DataAttributes(BaseModel):
name: Optional[str] = None
+ normalized_total_supply: Optional[str] = None
+
price_usd: Optional[str] = None
symbol: Optional[str] = None
diff --git a/src/coingecko_python/types/onchain/networks/tokens/pool_get_response.py b/src/coingecko_python/types/onchain/networks/tokens/pool_get_response.py
index 520aa17..849b288 100644
--- a/src/coingecko_python/types/onchain/networks/tokens/pool_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/tokens/pool_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/tokens/trade_get_params.py b/src/coingecko_python/types/onchain/networks/tokens/trade_get_params.py
new file mode 100644
index 0000000..0fc9336
--- /dev/null
+++ b/src/coingecko_python/types/onchain/networks/tokens/trade_get_params.py
@@ -0,0 +1,14 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["TradeGetParams"]
+
+
+class TradeGetParams(TypedDict, total=False):
+ network: Required[str]
+
+ trade_volume_in_usd_greater_than: float
+ """filter trades by trade volume in USD greater than this value Default value: 0"""
diff --git a/src/coingecko_python/types/onchain/networks/tokens/trade_get_response.py b/src/coingecko_python/types/onchain/networks/tokens/trade_get_response.py
new file mode 100644
index 0000000..e1fd1bd
--- /dev/null
+++ b/src/coingecko_python/types/onchain/networks/tokens/trade_get_response.py
@@ -0,0 +1,53 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+
+from ....._models import BaseModel
+
+__all__ = ["TradeGetResponse", "Data", "DataAttributes"]
+
+
+class DataAttributes(BaseModel):
+ block_number: Optional[int] = None
+
+ block_timestamp: Optional[str] = None
+
+ from_token_address: Optional[str] = None
+
+ from_token_amount: Optional[str] = None
+
+ kind: Optional[str] = None
+
+ pool_address: Optional[str] = None
+
+ pool_dex: Optional[str] = None
+
+ price_from_in_currency_token: Optional[str] = None
+
+ price_from_in_usd: Optional[str] = None
+
+ price_to_in_currency_token: Optional[str] = None
+
+ price_to_in_usd: Optional[str] = None
+
+ to_token_address: Optional[str] = None
+
+ to_token_amount: Optional[str] = None
+
+ tx_from_address: Optional[str] = None
+
+ tx_hash: Optional[str] = None
+
+ volume_in_usd: Optional[str] = None
+
+
+class Data(BaseModel):
+ id: Optional[str] = None
+
+ attributes: Optional[DataAttributes] = None
+
+ type: Optional[str] = None
+
+
+class TradeGetResponse(BaseModel):
+ data: Optional[List[Data]] = None
diff --git a/src/coingecko_python/types/onchain/networks/trending_pool_get_network_response.py b/src/coingecko_python/types/onchain/networks/trending_pool_get_network_response.py
index 8c66ed2..e7634e8 100644
--- a/src/coingecko_python/types/onchain/networks/trending_pool_get_network_response.py
+++ b/src/coingecko_python/types/onchain/networks/trending_pool_get_network_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/networks/trending_pool_get_response.py b/src/coingecko_python/types/onchain/networks/trending_pool_get_response.py
index 2e166e2..31eca13 100644
--- a/src/coingecko_python/types/onchain/networks/trending_pool_get_response.py
+++ b/src/coingecko_python/types/onchain/networks/trending_pool_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/pools/megafilter_get_response.py b/src/coingecko_python/types/onchain/pools/megafilter_get_response.py
index 2c605e7..ddb700f 100644
--- a/src/coingecko_python/types/onchain/pools/megafilter_get_response.py
+++ b/src/coingecko_python/types/onchain/pools/megafilter_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_python/types/onchain/search/pool_get_response.py b/src/coingecko_python/types/onchain/search/pool_get_response.py
index b2d3866..42c8178 100644
--- a/src/coingecko_python/types/onchain/search/pool_get_response.py
+++ b/src/coingecko_python/types/onchain/search/pool_get_response.py
@@ -21,8 +21,6 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
- "DataRelationshipsNetwork",
- "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -164,16 +162,6 @@ class DataRelationshipsDex(BaseModel):
data: Optional[DataRelationshipsDexData] = None
-class DataRelationshipsNetworkData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsNetwork(BaseModel):
- data: Optional[DataRelationshipsNetworkData] = None
-
-
class DataRelationshipsQuoteTokenData(BaseModel):
id: Optional[str] = None
@@ -189,8 +177,6 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
- network: Optional[DataRelationshipsNetwork] = None
-
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/tests/api_resources/coins/test_tickers.py b/tests/api_resources/coins/test_tickers.py
index 7b6064b..dfda9ab 100644
--- a/tests/api_resources/coins/test_tickers.py
+++ b/tests/api_resources/coins/test_tickers.py
@@ -31,6 +31,7 @@ def test_method_get_with_all_params(self, client: Coingecko) -> None:
ticker = client.coins.tickers.get(
id="bitcoin",
depth=True,
+ dex_pair_format="contract_address",
exchange_ids="binance",
include_exchange_logo=True,
order="trust_score_desc",
@@ -90,6 +91,7 @@ async def test_method_get_with_all_params(self, async_client: AsyncCoingecko) ->
ticker = await async_client.coins.tickers.get(
id="bitcoin",
depth=True,
+ dex_pair_format="contract_address",
exchange_ids="binance",
include_exchange_logo=True,
order="trust_score_desc",
diff --git a/tests/api_resources/exchanges/test_tickers.py b/tests/api_resources/exchanges/test_tickers.py
index 588587b..3bffeb8 100644
--- a/tests/api_resources/exchanges/test_tickers.py
+++ b/tests/api_resources/exchanges/test_tickers.py
@@ -32,6 +32,7 @@ def test_method_get_with_all_params(self, client: Coingecko) -> None:
id="binance",
coin_ids="coin_ids",
depth=True,
+ dex_pair_format="contract_address",
include_exchange_logo=True,
order="trust_score_desc",
page=0,
@@ -91,6 +92,7 @@ async def test_method_get_with_all_params(self, async_client: AsyncCoingecko) ->
id="binance",
coin_ids="coin_ids",
depth=True,
+ dex_pair_format="contract_address",
include_exchange_logo=True,
order="trust_score_desc",
page=0,
diff --git a/tests/api_resources/onchain/networks/pools/test_multi.py b/tests/api_resources/onchain/networks/pools/test_multi.py
index 6b8356c..2bd9aea 100644
--- a/tests/api_resources/onchain/networks/pools/test_multi.py
+++ b/tests/api_resources/onchain/networks/pools/test_multi.py
@@ -33,6 +33,7 @@ def test_method_get_addresses_with_all_params(self, client: Coingecko) -> None:
addresses="addresses",
network="eth",
include="include",
+ include_volume_breakdown=True,
)
assert_matches_type(MultiGetAddressesResponse, multi, path=["response"])
@@ -99,6 +100,7 @@ async def test_method_get_addresses_with_all_params(self, async_client: AsyncCoi
addresses="addresses",
network="eth",
include="include",
+ include_volume_breakdown=True,
)
assert_matches_type(MultiGetAddressesResponse, multi, path=["response"])
diff --git a/tests/api_resources/onchain/networks/pools/test_ohlcv.py b/tests/api_resources/onchain/networks/pools/test_ohlcv.py
index 2b2a5d4..c793ac0 100644
--- a/tests/api_resources/onchain/networks/pools/test_ohlcv.py
+++ b/tests/api_resources/onchain/networks/pools/test_ohlcv.py
@@ -38,6 +38,7 @@ def test_method_get_timeframe_with_all_params(self, client: Coingecko) -> None:
aggregate="aggregate",
before_timestamp=0,
currency="usd",
+ include_empty_intervals=True,
limit=0,
)
assert_matches_type(OhlcvGetTimeframeResponse, ohlcv, path=["response"])
@@ -114,6 +115,7 @@ async def test_method_get_timeframe_with_all_params(self, async_client: AsyncCoi
aggregate="aggregate",
before_timestamp=0,
currency="usd",
+ include_empty_intervals=True,
limit=0,
)
assert_matches_type(OhlcvGetTimeframeResponse, ohlcv, path=["response"])
diff --git a/tests/api_resources/onchain/networks/test_pools.py b/tests/api_resources/onchain/networks/test_pools.py
index b69892d..7921fec 100644
--- a/tests/api_resources/onchain/networks/test_pools.py
+++ b/tests/api_resources/onchain/networks/test_pools.py
@@ -89,6 +89,7 @@ def test_method_get_address_with_all_params(self, client: Coingecko) -> None:
address="0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
network="eth",
include="include",
+ include_volume_breakdown=True,
)
assert_matches_type(PoolGetAddressResponse, pool, path=["response"])
@@ -208,6 +209,7 @@ async def test_method_get_address_with_all_params(self, async_client: AsyncCoing
address="0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
network="eth",
include="include",
+ include_volume_breakdown=True,
)
assert_matches_type(PoolGetAddressResponse, pool, path=["response"])
diff --git a/tests/api_resources/onchain/networks/tokens/test_trades.py b/tests/api_resources/onchain/networks/tokens/test_trades.py
new file mode 100644
index 0000000..7e10b07
--- /dev/null
+++ b/tests/api_resources/onchain/networks/tokens/test_trades.py
@@ -0,0 +1,146 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, cast
+
+import pytest
+
+from tests.utils import assert_matches_type
+from coingecko_python import Coingecko, AsyncCoingecko
+from coingecko_python.types.onchain.networks.tokens import TradeGetResponse
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestTrades:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_method_get(self, client: Coingecko) -> None:
+ trade = client.onchain.networks.tokens.trades.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ )
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_method_get_with_all_params(self, client: Coingecko) -> None:
+ trade = client.onchain.networks.tokens.trades.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ trade_volume_in_usd_greater_than=0,
+ )
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_raw_response_get(self, client: Coingecko) -> None:
+ response = client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ trade = response.parse()
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_streaming_response_get(self, client: Coingecko) -> None:
+ with client.onchain.networks.tokens.trades.with_streaming_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ trade = response.parse()
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_path_params_get(self, client: Coingecko) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `network` but received ''"):
+ client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `token_address` but received ''"):
+ client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="",
+ network="eth",
+ )
+
+
+class TestAsyncTrades:
+ parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_method_get(self, async_client: AsyncCoingecko) -> None:
+ trade = await async_client.onchain.networks.tokens.trades.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ )
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_method_get_with_all_params(self, async_client: AsyncCoingecko) -> None:
+ trade = await async_client.onchain.networks.tokens.trades.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ trade_volume_in_usd_greater_than=0,
+ )
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_raw_response_get(self, async_client: AsyncCoingecko) -> None:
+ response = await async_client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ trade = await response.parse()
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_streaming_response_get(self, async_client: AsyncCoingecko) -> None:
+ async with async_client.onchain.networks.tokens.trades.with_streaming_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="eth",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ trade = await response.parse()
+ assert_matches_type(TradeGetResponse, trade, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_path_params_get(self, async_client: AsyncCoingecko) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `network` but received ''"):
+ await async_client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="0xdac17f958d2ee523a2206206994597c13d831ec7",
+ network="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `token_address` but received ''"):
+ await async_client.onchain.networks.tokens.trades.with_raw_response.get(
+ token_address="",
+ network="eth",
+ )
diff --git a/tests/api_resources/test_coins.py b/tests/api_resources/test_coins.py
index f87dfa6..593230f 100644
--- a/tests/api_resources/test_coins.py
+++ b/tests/api_resources/test_coins.py
@@ -32,6 +32,7 @@ def test_method_get_id_with_all_params(self, client: Coingecko) -> None:
id="bitcoin",
community_data=True,
developer_data=True,
+ dex_pair_format="contract_address",
localization=True,
market_data=True,
sparkline=True,
@@ -92,6 +93,7 @@ async def test_method_get_id_with_all_params(self, async_client: AsyncCoingecko)
id="bitcoin",
community_data=True,
developer_data=True,
+ dex_pair_format="contract_address",
localization=True,
market_data=True,
sparkline=True,
diff --git a/tests/api_resources/test_exchanges.py b/tests/api_resources/test_exchanges.py
index 4f67a42..5f32935 100644
--- a/tests/api_resources/test_exchanges.py
+++ b/tests/api_resources/test_exchanges.py
@@ -62,7 +62,16 @@ def test_streaming_response_get(self, client: Coingecko) -> None:
@parametrize
def test_method_get_id(self, client: Coingecko) -> None:
exchange = client.exchanges.get_id(
- "binance",
+ id="binance",
+ )
+ assert_matches_type(ExchangeGetIDResponse, exchange, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ def test_method_get_id_with_all_params(self, client: Coingecko) -> None:
+ exchange = client.exchanges.get_id(
+ id="binance",
+ dex_pair_format="contract_address",
)
assert_matches_type(ExchangeGetIDResponse, exchange, path=["response"])
@@ -70,7 +79,7 @@ def test_method_get_id(self, client: Coingecko) -> None:
@parametrize
def test_raw_response_get_id(self, client: Coingecko) -> None:
response = client.exchanges.with_raw_response.get_id(
- "binance",
+ id="binance",
)
assert response.is_closed is True
@@ -82,7 +91,7 @@ def test_raw_response_get_id(self, client: Coingecko) -> None:
@parametrize
def test_streaming_response_get_id(self, client: Coingecko) -> None:
with client.exchanges.with_streaming_response.get_id(
- "binance",
+ id="binance",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -97,7 +106,7 @@ def test_streaming_response_get_id(self, client: Coingecko) -> None:
def test_path_params_get_id(self, client: Coingecko) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
client.exchanges.with_raw_response.get_id(
- "",
+ id="",
)
@pytest.mark.skip()
@@ -181,7 +190,16 @@ async def test_streaming_response_get(self, async_client: AsyncCoingecko) -> Non
@parametrize
async def test_method_get_id(self, async_client: AsyncCoingecko) -> None:
exchange = await async_client.exchanges.get_id(
- "binance",
+ id="binance",
+ )
+ assert_matches_type(ExchangeGetIDResponse, exchange, path=["response"])
+
+ @pytest.mark.skip()
+ @parametrize
+ async def test_method_get_id_with_all_params(self, async_client: AsyncCoingecko) -> None:
+ exchange = await async_client.exchanges.get_id(
+ id="binance",
+ dex_pair_format="contract_address",
)
assert_matches_type(ExchangeGetIDResponse, exchange, path=["response"])
@@ -189,7 +207,7 @@ async def test_method_get_id(self, async_client: AsyncCoingecko) -> None:
@parametrize
async def test_raw_response_get_id(self, async_client: AsyncCoingecko) -> None:
response = await async_client.exchanges.with_raw_response.get_id(
- "binance",
+ id="binance",
)
assert response.is_closed is True
@@ -201,7 +219,7 @@ async def test_raw_response_get_id(self, async_client: AsyncCoingecko) -> None:
@parametrize
async def test_streaming_response_get_id(self, async_client: AsyncCoingecko) -> None:
async with async_client.exchanges.with_streaming_response.get_id(
- "binance",
+ id="binance",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -216,7 +234,7 @@ async def test_streaming_response_get_id(self, async_client: AsyncCoingecko) ->
async def test_path_params_get_id(self, async_client: AsyncCoingecko) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
await async_client.exchanges.with_raw_response.get_id(
- "",
+ id="",
)
@pytest.mark.skip()
From cbcc66ae0a519e5444f8040f571a92a6f34dc443 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 29 May 2025 15:19:34 +0000
Subject: [PATCH 2/2] release: 0.1.0-alpha.3
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
pyproject.toml | 2 +-
src/coingecko_python/_version.py | 2 +-
4 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index f14b480..aaf968a 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.1.0-alpha.2"
+ ".": "0.1.0-alpha.3"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9074e2b..3e31371 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.1.0-alpha.3 (2025-05-29)
+
+Full Changelog: [v0.1.0-alpha.2...v0.1.0-alpha.3](https://github.com/coingecko/coingecko-python/compare/v0.1.0-alpha.2...v0.1.0-alpha.3)
+
+### Features
+
+* **api:** update via SDK Studio ([0812f21](https://github.com/coingecko/coingecko-python/commit/0812f2163205be4e48486f201ab979b78593e9a1))
+
## 0.1.0-alpha.2 (2025-05-28)
Full Changelog: [v0.1.0-alpha.1...v0.1.0-alpha.2](https://github.com/coingecko/coingecko-python/compare/v0.1.0-alpha.1...v0.1.0-alpha.2)
diff --git a/pyproject.toml b/pyproject.toml
index 4ea5d45..dd4a4b8 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "coingecko_python"
-version = "0.1.0-alpha.2"
+version = "0.1.0-alpha.3"
description = "The official Python library for the coingecko API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/coingecko_python/_version.py b/src/coingecko_python/_version.py
index 9fc083c..9a3224f 100644
--- a/src/coingecko_python/_version.py
+++ b/src/coingecko_python/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "coingecko_python"
-__version__ = "0.1.0-alpha.2" # x-release-please-version
+__version__ = "0.1.0-alpha.3" # x-release-please-version