diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 19cc6ed..65f558e 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "1.14.2"
+ ".": "2.0.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 9370ce5..8ed7920 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 84
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko%2Fcoingecko-e88de4e81cdb0547e40a951e747c95e7a9647577d8bee0ce5c5b4643a939ed3f.yml
-openapi_spec_hash: d3b574a0f909b96fd93f1f46a2f8efde
-config_hash: f101f417dba7f9352f7573639dd5938f
+configured_endpoints: 85
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko/coingecko-705ab95ba3a2ad5b97b9a9a8d942a52f918da8b2544b1a156846dd438c1d26d4.yml
+openapi_spec_hash: 82c4000d4dbeb57eabac6bb6cf9e3dc1
+config_hash: c77352c905b1a7d1ab31960e5195bddf
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cfd33a3..ff97499 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,28 @@
# Changelog
+## 2.0.0 (2026-04-30)
+
+Full Changelog: [v1.14.2...v2.0.0](https://github.com/coingecko/coingecko-python/compare/v1.14.2...v2.0.0)
+
+### ⚠ BREAKING CHANGES
+
+* AIP updates; fix!: Pydantic response model
+
+### Features
+
+* AIP updates; fix!: Pydantic response model ([8c4629e](https://github.com/coingecko/coingecko-python/commit/8c4629e7c7431cc8925b757fd23c205816357ed6))
+* support setting headers via env ([3979340](https://github.com/coingecko/coingecko-python/commit/3979340037d5ec65908c8c9e8d21d67e6e770ae8))
+
+
+### Bug Fixes
+
+* use correct field name format for multipart file arrays ([5932ae6](https://github.com/coingecko/coingecko-python/commit/5932ae6d020e9841a92773aee20ea926b849945e))
+
+
+### Chores
+
+* **internal:** more robust bootstrap script ([e53a0fc](https://github.com/coingecko/coingecko-python/commit/e53a0fc7939c399537fefd1cf9d77044a1925c94))
+
## 1.14.2 (2026-04-18)
Full Changelog: [v1.14.1...v1.14.2](https://github.com/coingecko/coingecko-python/compare/v1.14.1...v1.14.2)
diff --git a/api.md b/api.md
index 78b0814..7b0a611 100644
--- a/api.md
+++ b/api.md
@@ -15,7 +15,7 @@ Methods:
Types:
```python
-from coingecko_sdk.types import CoinGetIDResponse
+from coingecko_sdk.types import DetailPlatformData, CoinGetIDResponse
```
Methods:
@@ -317,6 +317,18 @@ Methods:
- client.key.get() -> KeyGetResponse
+# News
+
+Types:
+
+```python
+from coingecko_sdk.types import NewsGetResponse
+```
+
+Methods:
+
+- client.news.get(\*\*params) -> NewsGetResponse
+
# NFTs
Types:
@@ -453,7 +465,7 @@ Methods:
Types:
```python
-from coingecko_sdk.types.onchain.networks import PoolGetResponse, PoolGetAddressResponse
+from coingecko_sdk.types.onchain.networks import PoolData, PoolGetResponse, PoolGetAddressResponse
```
Methods:
@@ -705,6 +717,7 @@ Types:
```python
from coingecko_sdk.types import (
+ TreasuryEntity,
PublicTreasuryGetCoinIDResponse,
PublicTreasuryGetEntityIDResponse,
PublicTreasuryGetHoldingChartResponse,
diff --git a/pyproject.toml b/pyproject.toml
index 4f1c622..06f009d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "coingecko_sdk"
-version = "1.14.2"
+version = "2.0.0"
description = "The official Python library for the coingecko API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/scripts/bootstrap b/scripts/bootstrap
index b430fee..fe8451e 100755
--- a/scripts/bootstrap
+++ b/scripts/bootstrap
@@ -4,7 +4,7 @@ set -e
cd "$(dirname "$0")/.."
-if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then
+if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then
brew bundle check >/dev/null 2>&1 || {
echo -n "==> Install Homebrew dependencies? (y/N): "
read -r response
diff --git a/src/coingecko_sdk/_client.py b/src/coingecko_sdk/_client.py
index 7d6faad..396970b 100644
--- a/src/coingecko_sdk/_client.py
+++ b/src/coingecko_sdk/_client.py
@@ -20,7 +20,11 @@
RequestOptions,
not_given,
)
-from ._utils import is_given, get_async_library
+from ._utils import (
+ is_given,
+ is_mapping_t,
+ get_async_library,
+)
from ._compat import cached_property
from ._version import __version__
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
@@ -34,6 +38,7 @@
if TYPE_CHECKING:
from .resources import (
key,
+ news,
nfts,
ping,
coins,
@@ -50,6 +55,7 @@
public_treasury,
)
from .resources.key import KeyResource, AsyncKeyResource
+ from .resources.news import NewsResource, AsyncNewsResource
from .resources.ping import PingResource, AsyncPingResource
from .resources.entities import EntitiesResource, AsyncEntitiesResource
from .resources.nfts.nfts import NFTsResource, AsyncNFTsResource
@@ -155,6 +161,15 @@ def __init__(
except KeyError as exc:
raise ValueError(f"Unknown environment: {environment}") from exc
+ custom_headers_env = os.environ.get("COINGECKO_CUSTOM_HEADERS")
+ if custom_headers_env is not None:
+ parsed: dict[str, str] = {}
+ for line in custom_headers_env.split("\n"):
+ colon = line.find(":")
+ if colon >= 0:
+ parsed[line[:colon].strip()] = line[colon + 1 :].strip()
+ default_headers = {**parsed, **(default_headers if is_mapping_t(default_headers) else {})}
+
super().__init__(
version=__version__,
base_url=base_url,
@@ -214,6 +229,12 @@ def key(self) -> KeyResource:
return KeyResource(self)
+ @cached_property
+ def news(self) -> NewsResource:
+ from .resources.news import NewsResource
+
+ return NewsResource(self)
+
@cached_property
def nfts(self) -> NFTsResource:
from .resources.nfts import NFTsResource
@@ -470,6 +491,15 @@ def __init__(
except KeyError as exc:
raise ValueError(f"Unknown environment: {environment}") from exc
+ custom_headers_env = os.environ.get("COINGECKO_CUSTOM_HEADERS")
+ if custom_headers_env is not None:
+ parsed: dict[str, str] = {}
+ for line in custom_headers_env.split("\n"):
+ colon = line.find(":")
+ if colon >= 0:
+ parsed[line[:colon].strip()] = line[colon + 1 :].strip()
+ default_headers = {**parsed, **(default_headers if is_mapping_t(default_headers) else {})}
+
super().__init__(
version=__version__,
base_url=base_url,
@@ -529,6 +559,12 @@ def key(self) -> AsyncKeyResource:
return AsyncKeyResource(self)
+ @cached_property
+ def news(self) -> AsyncNewsResource:
+ from .resources.news import AsyncNewsResource
+
+ return AsyncNewsResource(self)
+
@cached_property
def nfts(self) -> AsyncNFTsResource:
from .resources.nfts import AsyncNFTsResource
@@ -767,6 +803,12 @@ def key(self) -> key.KeyResourceWithRawResponse:
return KeyResourceWithRawResponse(self._client.key)
+ @cached_property
+ def news(self) -> news.NewsResourceWithRawResponse:
+ from .resources.news import NewsResourceWithRawResponse
+
+ return NewsResourceWithRawResponse(self._client.news)
+
@cached_property
def nfts(self) -> nfts.NFTsResourceWithRawResponse:
from .resources.nfts import NFTsResourceWithRawResponse
@@ -864,6 +906,12 @@ def key(self) -> key.AsyncKeyResourceWithRawResponse:
return AsyncKeyResourceWithRawResponse(self._client.key)
+ @cached_property
+ def news(self) -> news.AsyncNewsResourceWithRawResponse:
+ from .resources.news import AsyncNewsResourceWithRawResponse
+
+ return AsyncNewsResourceWithRawResponse(self._client.news)
+
@cached_property
def nfts(self) -> nfts.AsyncNFTsResourceWithRawResponse:
from .resources.nfts import AsyncNFTsResourceWithRawResponse
@@ -961,6 +1009,12 @@ def key(self) -> key.KeyResourceWithStreamingResponse:
return KeyResourceWithStreamingResponse(self._client.key)
+ @cached_property
+ def news(self) -> news.NewsResourceWithStreamingResponse:
+ from .resources.news import NewsResourceWithStreamingResponse
+
+ return NewsResourceWithStreamingResponse(self._client.news)
+
@cached_property
def nfts(self) -> nfts.NFTsResourceWithStreamingResponse:
from .resources.nfts import NFTsResourceWithStreamingResponse
@@ -1058,6 +1112,12 @@ def key(self) -> key.AsyncKeyResourceWithStreamingResponse:
return AsyncKeyResourceWithStreamingResponse(self._client.key)
+ @cached_property
+ def news(self) -> news.AsyncNewsResourceWithStreamingResponse:
+ from .resources.news import AsyncNewsResourceWithStreamingResponse
+
+ return AsyncNewsResourceWithStreamingResponse(self._client.news)
+
@cached_property
def nfts(self) -> nfts.AsyncNFTsResourceWithStreamingResponse:
from .resources.nfts import AsyncNFTsResourceWithStreamingResponse
diff --git a/src/coingecko_sdk/_qs.py b/src/coingecko_sdk/_qs.py
index de8c99b..4127c19 100644
--- a/src/coingecko_sdk/_qs.py
+++ b/src/coingecko_sdk/_qs.py
@@ -2,17 +2,13 @@
from typing import Any, List, Tuple, Union, Mapping, TypeVar
from urllib.parse import parse_qs, urlencode
-from typing_extensions import Literal, get_args
+from typing_extensions import get_args
-from ._types import NotGiven, not_given
+from ._types import NotGiven, ArrayFormat, NestedFormat, not_given
from ._utils import flatten
_T = TypeVar("_T")
-
-ArrayFormat = Literal["comma", "repeat", "indices", "brackets"]
-NestedFormat = Literal["dots", "brackets"]
-
PrimitiveData = Union[str, int, float, bool, None]
# this should be Data = Union[PrimitiveData, "List[Data]", "Tuple[Data]", "Mapping[str, Data]"]
# https://github.com/microsoft/pyright/issues/3555
diff --git a/src/coingecko_sdk/_types.py b/src/coingecko_sdk/_types.py
index e012547..050b47b 100644
--- a/src/coingecko_sdk/_types.py
+++ b/src/coingecko_sdk/_types.py
@@ -47,6 +47,9 @@
ModelT = TypeVar("ModelT", bound=pydantic.BaseModel)
_T = TypeVar("_T")
+ArrayFormat = Literal["comma", "repeat", "indices", "brackets"]
+NestedFormat = Literal["dots", "brackets"]
+
# Approximates httpx internal ProxiesTypes and RequestFiles types
# while adding support for `PathLike` instances
diff --git a/src/coingecko_sdk/_utils/_utils.py b/src/coingecko_sdk/_utils/_utils.py
index 771859f..199cd23 100644
--- a/src/coingecko_sdk/_utils/_utils.py
+++ b/src/coingecko_sdk/_utils/_utils.py
@@ -17,11 +17,11 @@
)
from pathlib import Path
from datetime import date, datetime
-from typing_extensions import TypeGuard
+from typing_extensions import TypeGuard, get_args
import sniffio
-from .._types import Omit, NotGiven, FileTypes, HeadersLike
+from .._types import Omit, NotGiven, FileTypes, ArrayFormat, HeadersLike
_T = TypeVar("_T")
_TupleT = TypeVar("_TupleT", bound=Tuple[object, ...])
@@ -40,25 +40,45 @@ def extract_files(
query: Mapping[str, object],
*,
paths: Sequence[Sequence[str]],
+ array_format: ArrayFormat = "brackets",
) -> list[tuple[str, FileTypes]]:
"""Recursively extract files from the given dictionary based on specified paths.
A path may look like this ['foo', 'files', '', 'data'].
+ ``array_format`` controls how ```` segments contribute to the emitted
+ field name. Supported values: ``"brackets"`` (``foo[]``), ``"repeat"`` and
+ ``"comma"`` (``foo``), ``"indices"`` (``foo[0]``, ``foo[1]``).
+
Note: this mutates the given dictionary.
"""
files: list[tuple[str, FileTypes]] = []
for path in paths:
- files.extend(_extract_items(query, path, index=0, flattened_key=None))
+ files.extend(_extract_items(query, path, index=0, flattened_key=None, array_format=array_format))
return files
+def _array_suffix(array_format: ArrayFormat, array_index: int) -> str:
+ if array_format == "brackets":
+ return "[]"
+ if array_format == "indices":
+ return f"[{array_index}]"
+ if array_format == "repeat" or array_format == "comma":
+ # Both repeat the bare field name for each file part; there is no
+ # meaningful way to comma-join binary parts.
+ return ""
+ raise NotImplementedError(
+ f"Unknown array_format value: {array_format}, choose from {', '.join(get_args(ArrayFormat))}"
+ )
+
+
def _extract_items(
obj: object,
path: Sequence[str],
*,
index: int,
flattened_key: str | None,
+ array_format: ArrayFormat,
) -> list[tuple[str, FileTypes]]:
try:
key = path[index]
@@ -75,9 +95,11 @@ def _extract_items(
if is_list(obj):
files: list[tuple[str, FileTypes]] = []
- for entry in obj:
- assert_is_file_content(entry, key=flattened_key + "[]" if flattened_key else "")
- files.append((flattened_key + "[]", cast(FileTypes, entry)))
+ for array_index, entry in enumerate(obj):
+ suffix = _array_suffix(array_format, array_index)
+ emitted_key = (flattened_key + suffix) if flattened_key else suffix
+ assert_is_file_content(entry, key=emitted_key)
+ files.append((emitted_key, cast(FileTypes, entry)))
return files
assert_is_file_content(obj, key=flattened_key)
@@ -106,6 +128,7 @@ def _extract_items(
path,
index=index,
flattened_key=flattened_key,
+ array_format=array_format,
)
elif is_list(obj):
if key != "":
@@ -117,9 +140,12 @@ def _extract_items(
item,
path,
index=index,
- flattened_key=flattened_key + "[]" if flattened_key is not None else "[]",
+ flattened_key=(
+ (flattened_key if flattened_key is not None else "") + _array_suffix(array_format, array_index)
+ ),
+ array_format=array_format,
)
- for item in obj
+ for array_index, item in enumerate(obj)
]
)
diff --git a/src/coingecko_sdk/_version.py b/src/coingecko_sdk/_version.py
index d5107f8..c286659 100644
--- a/src/coingecko_sdk/_version.py
+++ b/src/coingecko_sdk/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "coingecko_sdk"
-__version__ = "1.14.2" # x-release-please-version
+__version__ = "2.0.0" # x-release-please-version
diff --git a/src/coingecko_sdk/resources/__init__.py b/src/coingecko_sdk/resources/__init__.py
index 548be8c..4068ebc 100644
--- a/src/coingecko_sdk/resources/__init__.py
+++ b/src/coingecko_sdk/resources/__init__.py
@@ -8,6 +8,14 @@
KeyResourceWithStreamingResponse,
AsyncKeyResourceWithStreamingResponse,
)
+from .news import (
+ NewsResource,
+ AsyncNewsResource,
+ NewsResourceWithRawResponse,
+ AsyncNewsResourceWithRawResponse,
+ NewsResourceWithStreamingResponse,
+ AsyncNewsResourceWithStreamingResponse,
+)
from .nfts import (
NFTsResource,
AsyncNFTsResource,
@@ -170,6 +178,12 @@
"AsyncKeyResourceWithRawResponse",
"KeyResourceWithStreamingResponse",
"AsyncKeyResourceWithStreamingResponse",
+ "NewsResource",
+ "AsyncNewsResource",
+ "NewsResourceWithRawResponse",
+ "AsyncNewsResourceWithRawResponse",
+ "NewsResourceWithStreamingResponse",
+ "AsyncNewsResourceWithStreamingResponse",
"NFTsResource",
"AsyncNFTsResource",
"NFTsResourceWithRawResponse",
diff --git a/src/coingecko_sdk/resources/news.py b/src/coingecko_sdk/resources/news.py
new file mode 100644
index 0000000..9b8e2e9
--- /dev/null
+++ b/src/coingecko_sdk/resources/news.py
@@ -0,0 +1,293 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal
+
+import httpx
+
+from ..types import news_get_params
+from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
+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.news_get_response import NewsGetResponse
+
+__all__ = ["NewsResource", "AsyncNewsResource"]
+
+
+class NewsResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> NewsResourceWithRawResponse:
+ """
+ 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 NewsResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> NewsResourceWithStreamingResponse:
+ """
+ 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 NewsResourceWithStreamingResponse(self)
+
+ def get(
+ self,
+ *,
+ coin_id: str | Omit = omit,
+ language: Literal[
+ "en",
+ "ru",
+ "de",
+ "pl",
+ "es",
+ "vi",
+ "fr",
+ "pt-br",
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "el",
+ "fi",
+ "he",
+ "hi",
+ "hr",
+ "hu",
+ "id",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "nl",
+ "no",
+ "ro",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "uk",
+ "zh",
+ "zh-tw",
+ ]
+ | Omit = omit,
+ page: int | Omit = omit,
+ per_page: int | Omit = omit,
+ type: Literal["all", "news", "guides"] | Omit = omit,
+ # 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,
+ ) -> NewsGetResponse:
+ """
+ This endpoint allows you to **query the latest crypto news and guides on
+ CoinGecko**
+
+ Args:
+ coin_id: filter news by coin ID \\**refers to [`/coins/list`](/reference/coins-list).
+
+ language: filter news by language Default value: **en**
+
+ page: page through results Default value: **1**
+
+ per_page: total results per page Default value: **10**
+
+ type: filter news by type Default value: **all** Note: `guides` filter is only
+ applicable if `coin_id` is specified and valid
+
+ 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
+ """
+ return self._get(
+ "/news",
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {
+ "coin_id": coin_id,
+ "language": language,
+ "page": page,
+ "per_page": per_page,
+ "type": type,
+ },
+ news_get_params.NewsGetParams,
+ ),
+ ),
+ cast_to=NewsGetResponse,
+ )
+
+
+class AsyncNewsResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncNewsResourceWithRawResponse:
+ """
+ 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 AsyncNewsResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncNewsResourceWithStreamingResponse:
+ """
+ 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 AsyncNewsResourceWithStreamingResponse(self)
+
+ async def get(
+ self,
+ *,
+ coin_id: str | Omit = omit,
+ language: Literal[
+ "en",
+ "ru",
+ "de",
+ "pl",
+ "es",
+ "vi",
+ "fr",
+ "pt-br",
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "el",
+ "fi",
+ "he",
+ "hi",
+ "hr",
+ "hu",
+ "id",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "nl",
+ "no",
+ "ro",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "uk",
+ "zh",
+ "zh-tw",
+ ]
+ | Omit = omit,
+ page: int | Omit = omit,
+ per_page: int | Omit = omit,
+ type: Literal["all", "news", "guides"] | Omit = omit,
+ # 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,
+ ) -> NewsGetResponse:
+ """
+ This endpoint allows you to **query the latest crypto news and guides on
+ CoinGecko**
+
+ Args:
+ coin_id: filter news by coin ID \\**refers to [`/coins/list`](/reference/coins-list).
+
+ language: filter news by language Default value: **en**
+
+ page: page through results Default value: **1**
+
+ per_page: total results per page Default value: **10**
+
+ type: filter news by type Default value: **all** Note: `guides` filter is only
+ applicable if `coin_id` is specified and valid
+
+ 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
+ """
+ return await self._get(
+ "/news",
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=await async_maybe_transform(
+ {
+ "coin_id": coin_id,
+ "language": language,
+ "page": page,
+ "per_page": per_page,
+ "type": type,
+ },
+ news_get_params.NewsGetParams,
+ ),
+ ),
+ cast_to=NewsGetResponse,
+ )
+
+
+class NewsResourceWithRawResponse:
+ def __init__(self, news: NewsResource) -> None:
+ self._news = news
+
+ self.get = to_raw_response_wrapper(
+ news.get,
+ )
+
+
+class AsyncNewsResourceWithRawResponse:
+ def __init__(self, news: AsyncNewsResource) -> None:
+ self._news = news
+
+ self.get = async_to_raw_response_wrapper(
+ news.get,
+ )
+
+
+class NewsResourceWithStreamingResponse:
+ def __init__(self, news: NewsResource) -> None:
+ self._news = news
+
+ self.get = to_streamed_response_wrapper(
+ news.get,
+ )
+
+
+class AsyncNewsResourceWithStreamingResponse:
+ def __init__(self, news: AsyncNewsResource) -> None:
+ self._news = news
+
+ self.get = async_to_streamed_response_wrapper(
+ news.get,
+ )
diff --git a/src/coingecko_sdk/resources/onchain/search/pools.py b/src/coingecko_sdk/resources/onchain/search/pools.py
index 0fb0a4d..e54acd8 100644
--- a/src/coingecko_sdk/resources/onchain/search/pools.py
+++ b/src/coingecko_sdk/resources/onchain/search/pools.py
@@ -56,7 +56,8 @@ def get(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> PoolGetResponse:
"""
- This endpoint allows you to **search for pools on a network**
+ This endpoint allows you to **search for pools on a network by pool address,
+ token name, token symbol, or token contract address**
Args:
include: attributes to include, comma-separated if more than one to include Available
@@ -66,7 +67,8 @@ def get(
page: page through results Default value: 1
- query: search query
+ query: search query, can be pool contract address, token name, token symbol, or token
+ contract address
extra_headers: Send extra headers
@@ -132,7 +134,8 @@ async def get(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> PoolGetResponse:
"""
- This endpoint allows you to **search for pools on a network**
+ This endpoint allows you to **search for pools on a network by pool address,
+ token name, token symbol, or token contract address**
Args:
include: attributes to include, comma-separated if more than one to include Available
@@ -142,7 +145,8 @@ async def get(
page: page through results Default value: 1
- query: search query
+ query: search query, can be pool contract address, token name, token symbol, or token
+ contract address
extra_headers: Send extra headers
diff --git a/src/coingecko_sdk/resources/simple/price.py b/src/coingecko_sdk/resources/simple/price.py
index 865cbdf..2293ed0 100644
--- a/src/coingecko_sdk/resources/simple/price.py
+++ b/src/coingecko_sdk/resources/simple/price.py
@@ -87,7 +87,7 @@ def get(
) -> PriceGetResponse:
"""
This endpoint allows you to **query the prices of one or more coins by using
- their unique Coin API IDs**
+ their unique Coin API IDs, symbols, or names**
Args:
vs_currencies: target currency of coins, comma-separated if querying more than 1 currency.
@@ -213,7 +213,7 @@ async def get(
) -> PriceGetResponse:
"""
This endpoint allows you to **query the prices of one or more coins by using
- their unique Coin API IDs**
+ their unique Coin API IDs, symbols, or names**
Args:
vs_currencies: target currency of coins, comma-separated if querying more than 1 currency.
diff --git a/src/coingecko_sdk/types/__init__.py b/src/coingecko_sdk/types/__init__.py
index c8b3d85..7e0688d 100644
--- a/src/coingecko_sdk/types/__init__.py
+++ b/src/coingecko_sdk/types/__init__.py
@@ -2,7 +2,10 @@
from __future__ import annotations
+from .news_get_params import NewsGetParams as NewsGetParams
+from .treasury_entity import TreasuryEntity as TreasuryEntity
from .key_get_response import KeyGetResponse as KeyGetResponse
+from .news_get_response import NewsGetResponse as NewsGetResponse
from .ping_get_response import PingGetResponse as PingGetResponse
from .search_get_params import SearchGetParams as SearchGetParams
from .coin_get_id_params import CoinGetIDParams as CoinGetIDParams
@@ -12,6 +15,7 @@
from .nft_get_list_params import NFTGetListParams as NFTGetListParams
from .search_get_response import SearchGetResponse as SearchGetResponse
from .coin_get_id_response import CoinGetIDResponse as CoinGetIDResponse
+from .detail_platform_data import DetailPlatformData as DetailPlatformData
from .exchange_get_response import ExchangeGetResponse as ExchangeGetResponse
from .nft_get_list_response import NFTGetListResponse as NFTGetListResponse
from .entity_get_list_params import EntityGetListParams as EntityGetListParams
diff --git a/src/coingecko_sdk/types/coin_get_id_response.py b/src/coingecko_sdk/types/coin_get_id_response.py
index c539c1c..75999b8 100644
--- a/src/coingecko_sdk/types/coin_get_id_response.py
+++ b/src/coingecko_sdk/types/coin_get_id_response.py
@@ -4,12 +4,12 @@
from datetime import datetime
from .._models import BaseModel
+from .detail_platform_data import DetailPlatformData
__all__ = [
"CoinGetIDResponse",
"CategoriesDetail",
"CommunityData",
- "DetailPlatforms",
"DeveloperData",
"DeveloperDataCodeAdditionsDeletions4Weeks",
"IcoData",
@@ -76,14 +76,6 @@ class CommunityData(BaseModel):
"""coin telegram channel user count"""
-class DetailPlatforms(BaseModel):
- contract_address: Optional[str] = None
- """contract address on the platform"""
-
- decimal_place: Optional[float] = None
- """decimal places for the token"""
-
-
class DeveloperDataCodeAdditionsDeletions4Weeks(BaseModel):
"""coin code additions and deletions in 4 weeks"""
@@ -575,6 +567,14 @@ class MarketData(BaseModel):
mcap_to_tvl_ratio: Optional[float] = None
"""market cap to total value locked ratio"""
+ outstanding_supply: Optional[float] = None
+ """
+ tokens outstanding in the market, circulated/tradable or planned for circulation
+ """
+
+ outstanding_token_value_usd: Optional[float] = None
+ """outstanding token value in USD"""
+
price_change_24h: Optional[float] = None
"""coin 24hr price change in currency"""
@@ -679,6 +679,9 @@ class Ticker(BaseModel):
coin_id: Optional[str] = None
"""coin ticker base currency coin ID"""
+ coin_mcap_usd: Optional[float] = None
+ """coin market cap in usd"""
+
converted_last: Optional[TickerConvertedLast] = None
"""coin ticker converted last price"""
@@ -753,7 +756,7 @@ class CoinGetIDResponse(BaseModel):
description: Optional[Dict[str, str]] = None
"""coin description"""
- detail_platforms: Optional[Dict[str, DetailPlatforms]] = None
+ detail_platforms: Optional[Dict[str, DetailPlatformData]] = None
"""detailed coin asset platform and contract address"""
developer_data: Optional[DeveloperData] = None
@@ -792,7 +795,7 @@ class CoinGetIDResponse(BaseModel):
name: Optional[str] = None
"""coin name"""
- platforms: Optional[Dict[str, str]] = None
+ platforms: Optional[Dict[str, Optional[str]]] = None
"""coin asset platform and contract address"""
preview_listing: Optional[bool] = None
diff --git a/src/coingecko_sdk/types/coins/contract_get_response.py b/src/coingecko_sdk/types/coins/contract_get_response.py
index 22f252b..2e857ae 100644
--- a/src/coingecko_sdk/types/coins/contract_get_response.py
+++ b/src/coingecko_sdk/types/coins/contract_get_response.py
@@ -4,11 +4,11 @@
from datetime import datetime
from ..._models import BaseModel
+from ..detail_platform_data import DetailPlatformData
__all__ = [
"ContractGetResponse",
"CommunityData",
- "DetailPlatforms",
"DeveloperData",
"DeveloperDataCodeAdditionsDeletions4Weeks",
"Image",
@@ -66,14 +66,6 @@ class CommunityData(BaseModel):
"""coin telegram channel user count"""
-class DetailPlatforms(BaseModel):
- contract_address: Optional[str] = None
- """contract address on the platform"""
-
- decimal_place: Optional[float] = None
- """decimal places for the token"""
-
-
class DeveloperDataCodeAdditionsDeletions4Weeks(BaseModel):
"""coin code additions and deletions in 4 weeks"""
@@ -471,6 +463,14 @@ class MarketData(BaseModel):
mcap_to_tvl_ratio: Optional[float] = None
"""market cap to total value locked ratio"""
+ outstanding_supply: Optional[float] = None
+ """
+ tokens outstanding in the market, circulated/tradable or planned for circulation
+ """
+
+ outstanding_token_value_usd: Optional[float] = None
+ """outstanding token value in USD"""
+
price_change_24h: Optional[float] = None
"""coin 24hr price change in currency"""
@@ -575,6 +575,9 @@ class Ticker(BaseModel):
coin_id: Optional[str] = None
"""coin ticker base currency coin ID"""
+ coin_mcap_usd: Optional[float] = None
+ """coin market cap in usd"""
+
converted_last: Optional[TickerConvertedLast] = None
"""coin ticker converted last price"""
@@ -640,13 +643,16 @@ class ContractGetResponse(BaseModel):
community_data: Optional[CommunityData] = None
"""coin community data"""
+ contract_address: Optional[str] = None
+ """coin contract address"""
+
country_origin: Optional[str] = None
"""coin country of origin"""
description: Optional[Dict[str, str]] = None
"""coin description"""
- detail_platforms: Optional[Dict[str, DetailPlatforms]] = None
+ detail_platforms: Optional[Dict[str, DetailPlatformData]] = None
"""detailed coin asset platform and contract address"""
developer_data: Optional[DeveloperData] = None
@@ -682,7 +688,7 @@ class ContractGetResponse(BaseModel):
name: Optional[str] = None
"""coin name"""
- platforms: Optional[Dict[str, str]] = None
+ platforms: Optional[Dict[str, Optional[str]]] = None
"""coin asset platform and contract address"""
preview_listing: Optional[bool] = None
diff --git a/src/coingecko_sdk/types/coins/market_get_response.py b/src/coingecko_sdk/types/coins/market_get_response.py
index bdf0e7a..de9558a 100644
--- a/src/coingecko_sdk/types/coins/market_get_response.py
+++ b/src/coingecko_sdk/types/coins/market_get_response.py
@@ -12,13 +12,13 @@
class MarketGetResponseItemRoi(BaseModel):
"""return on investment data"""
- currency: str
+ currency: Optional[str] = None
"""ROI currency"""
- percentage: float
+ percentage: Optional[float] = None
"""ROI percentage"""
- times: float
+ times: Optional[float] = None
"""ROI multiplier"""
diff --git a/src/coingecko_sdk/types/coins/ticker_get_response.py b/src/coingecko_sdk/types/coins/ticker_get_response.py
index 97e6912..3059252 100644
--- a/src/coingecko_sdk/types/coins/ticker_get_response.py
+++ b/src/coingecko_sdk/types/coins/ticker_get_response.py
@@ -30,18 +30,18 @@ class TickerConvertedVolume(BaseModel):
class TickerMarket(BaseModel):
"""coin ticker exchange"""
- has_trading_incentive: bool
+ has_trading_incentive: Optional[bool] = None
"""exchange trading incentive"""
- identifier: str
+ identifier: Optional[str] = None
"""exchange identifier"""
- name: str
- """exchange name"""
-
logo: Optional[str] = None
"""exchange image url"""
+ name: Optional[str] = None
+ """exchange name"""
+
class Ticker(BaseModel):
base: Optional[str] = None
@@ -53,6 +53,9 @@ class Ticker(BaseModel):
coin_id: Optional[str] = None
"""coin ticker base currency coin ID"""
+ coin_mcap_usd: Optional[float] = None
+ """coin market cap in usd"""
+
converted_last: Optional[TickerConvertedLast] = None
"""coin ticker converted last price"""
diff --git a/src/coingecko_sdk/types/derivatives/exchange_get_id_response.py b/src/coingecko_sdk/types/derivatives/exchange_get_id_response.py
index 03de392..dc26088 100644
--- a/src/coingecko_sdk/types/derivatives/exchange_get_id_response.py
+++ b/src/coingecko_sdk/types/derivatives/exchange_get_id_response.py
@@ -103,7 +103,7 @@ class ExchangeGetIDResponse(BaseModel):
tickers: Optional[List[Ticker]] = None
- trade_volume_24h_btc: Optional[float] = None
+ trade_volume_24h_btc: Optional[str] = None
"""derivatives exchange trade volume in BTC in 24 hours"""
url: Optional[str] = None
diff --git a/src/coingecko_sdk/types/detail_platform_data.py b/src/coingecko_sdk/types/detail_platform_data.py
new file mode 100644
index 0000000..3d53b11
--- /dev/null
+++ b/src/coingecko_sdk/types/detail_platform_data.py
@@ -0,0 +1,15 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+
+from .._models import BaseModel
+
+__all__ = ["DetailPlatformData"]
+
+
+class DetailPlatformData(BaseModel):
+ contract_address: Optional[str] = None
+ """contract address on the platform"""
+
+ decimal_place: Optional[float] = None
+ """decimal places for the token"""
diff --git a/src/coingecko_sdk/types/exchange_get_id_response.py b/src/coingecko_sdk/types/exchange_get_id_response.py
index 3eb72ae..83f4910 100644
--- a/src/coingecko_sdk/types/exchange_get_id_response.py
+++ b/src/coingecko_sdk/types/exchange_get_id_response.py
@@ -6,6 +6,9 @@
__all__ = [
"ExchangeGetIDResponse",
+ "StatusUpdate",
+ "StatusUpdateProject",
+ "StatusUpdateProjectImage",
"Ticker",
"TickerTicker",
"TickerTickerConvertedLast",
@@ -14,6 +17,40 @@
]
+class StatusUpdateProjectImage(BaseModel):
+ large: Optional[str] = None
+
+ small: Optional[str] = None
+
+ thumb: Optional[str] = None
+
+
+class StatusUpdateProject(BaseModel):
+ id: Optional[str] = None
+
+ image: Optional[StatusUpdateProjectImage] = None
+
+ name: Optional[str] = None
+
+ type: Optional[str] = None
+
+
+class StatusUpdate(BaseModel):
+ category: Optional[str] = None
+
+ created_at: Optional[str] = None
+
+ description: Optional[str] = None
+
+ pin: Optional[bool] = None
+
+ project: Optional[StatusUpdateProject] = None
+
+ user: Optional[str] = None
+
+ user_title: Optional[str] = None
+
+
class TickerTickerConvertedLast(BaseModel):
"""coin ticker converted last price"""
@@ -37,18 +74,18 @@ class TickerTickerConvertedVolume(BaseModel):
class TickerTickerMarket(BaseModel):
"""coin ticker exchange"""
- has_trading_incentive: bool
+ has_trading_incentive: Optional[bool] = None
"""exchange trading incentive"""
- identifier: str
+ identifier: Optional[str] = None
"""exchange identifier"""
- name: str
- """exchange name"""
-
logo: Optional[str] = None
"""exchange image url"""
+ name: Optional[str] = None
+ """exchange name"""
+
class TickerTicker(BaseModel):
base: Optional[str] = None
@@ -60,6 +97,9 @@ class TickerTicker(BaseModel):
coin_id: Optional[str] = None
"""coin ticker base currency coin ID"""
+ coin_mcap_usd: Optional[float] = None
+ """coin market cap in usd"""
+
converted_last: Optional[TickerTickerConvertedLast] = None
"""coin ticker converted last price"""
@@ -164,6 +204,9 @@ class ExchangeGetIDResponse(BaseModel):
slack_url: Optional[str] = None
"""exchange slack url"""
+ status_updates: Optional[List[StatusUpdate]] = None
+ """exchange status updates"""
+
telegram_url: Optional[str] = None
"""exchange telegram url"""
diff --git a/src/coingecko_sdk/types/exchange_get_list_response.py b/src/coingecko_sdk/types/exchange_get_list_response.py
index 33c3c79..85f094e 100644
--- a/src/coingecko_sdk/types/exchange_get_list_response.py
+++ b/src/coingecko_sdk/types/exchange_get_list_response.py
@@ -1,6 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from typing import List
+from typing import List, Optional
from typing_extensions import TypeAlias
from .._models import BaseModel
@@ -9,10 +9,10 @@
class ExchangeGetListResponseItem(BaseModel):
- id: str
+ id: Optional[str] = None
"""exchange ID"""
- name: str
+ name: Optional[str] = None
"""exchange name"""
diff --git a/src/coingecko_sdk/types/exchanges/ticker_get_response.py b/src/coingecko_sdk/types/exchanges/ticker_get_response.py
index 97e6912..3059252 100644
--- a/src/coingecko_sdk/types/exchanges/ticker_get_response.py
+++ b/src/coingecko_sdk/types/exchanges/ticker_get_response.py
@@ -30,18 +30,18 @@ class TickerConvertedVolume(BaseModel):
class TickerMarket(BaseModel):
"""coin ticker exchange"""
- has_trading_incentive: bool
+ has_trading_incentive: Optional[bool] = None
"""exchange trading incentive"""
- identifier: str
+ identifier: Optional[str] = None
"""exchange identifier"""
- name: str
- """exchange name"""
-
logo: Optional[str] = None
"""exchange image url"""
+ name: Optional[str] = None
+ """exchange name"""
+
class Ticker(BaseModel):
base: Optional[str] = None
@@ -53,6 +53,9 @@ class Ticker(BaseModel):
coin_id: Optional[str] = None
"""coin ticker base currency coin ID"""
+ coin_mcap_usd: Optional[float] = None
+ """coin market cap in usd"""
+
converted_last: Optional[TickerConvertedLast] = None
"""coin ticker converted last price"""
diff --git a/src/coingecko_sdk/types/exchanges/volume_chart_get_range_response.py b/src/coingecko_sdk/types/exchanges/volume_chart_get_range_response.py
index df976c6..bc2b22b 100644
--- a/src/coingecko_sdk/types/exchanges/volume_chart_get_range_response.py
+++ b/src/coingecko_sdk/types/exchanges/volume_chart_get_range_response.py
@@ -1,8 +1,8 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from typing import List
+from typing import List, Union
from typing_extensions import TypeAlias
__all__ = ["VolumeChartGetRangeResponse"]
-VolumeChartGetRangeResponse: TypeAlias = List[List[float]]
+VolumeChartGetRangeResponse: TypeAlias = List[List[Union[float, str]]]
diff --git a/src/coingecko_sdk/types/exchanges/volume_chart_get_response.py b/src/coingecko_sdk/types/exchanges/volume_chart_get_response.py
index 646ebc0..432610d 100644
--- a/src/coingecko_sdk/types/exchanges/volume_chart_get_response.py
+++ b/src/coingecko_sdk/types/exchanges/volume_chart_get_response.py
@@ -1,8 +1,8 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from typing import List
+from typing import List, Union
from typing_extensions import TypeAlias
__all__ = ["VolumeChartGetResponse"]
-VolumeChartGetResponse: TypeAlias = List[List[float]]
+VolumeChartGetResponse: TypeAlias = List[List[Union[float, str]]]
diff --git a/src/coingecko_sdk/types/news_get_params.py b/src/coingecko_sdk/types/news_get_params.py
new file mode 100644
index 0000000..734b738
--- /dev/null
+++ b/src/coingecko_sdk/types/news_get_params.py
@@ -0,0 +1,62 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal, TypedDict
+
+__all__ = ["NewsGetParams"]
+
+
+class NewsGetParams(TypedDict, total=False):
+ coin_id: str
+ """filter news by coin ID \\**refers to [`/coins/list`](/reference/coins-list)."""
+
+ language: Literal[
+ "en",
+ "ru",
+ "de",
+ "pl",
+ "es",
+ "vi",
+ "fr",
+ "pt-br",
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "el",
+ "fi",
+ "he",
+ "hi",
+ "hr",
+ "hu",
+ "id",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "nl",
+ "no",
+ "ro",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "uk",
+ "zh",
+ "zh-tw",
+ ]
+ """filter news by language Default value: **en**"""
+
+ page: int
+ """page through results Default value: **1**"""
+
+ per_page: int
+ """total results per page Default value: **10**"""
+
+ type: Literal["all", "news", "guides"]
+ """
+ filter news by type Default value: **all** Note: `guides` filter is only
+ applicable if `coin_id` is specified and valid
+ """
diff --git a/src/coingecko_sdk/types/news_get_response.py b/src/coingecko_sdk/types/news_get_response.py
new file mode 100644
index 0000000..e242a8c
--- /dev/null
+++ b/src/coingecko_sdk/types/news_get_response.py
@@ -0,0 +1,37 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from typing_extensions import Literal, TypeAlias
+
+from .._models import BaseModel
+
+__all__ = ["NewsGetResponse", "NewsGetResponseItem"]
+
+
+class NewsGetResponseItem(BaseModel):
+ author: Optional[str] = None
+ """news article author"""
+
+ image: Optional[str] = None
+ """news article image URL"""
+
+ posted_at: Optional[str] = None
+ """news article published timestamp in ISO 8601 format"""
+
+ related_coin_ids: Optional[List[str]] = None
+ """related coin IDs"""
+
+ source_name: Optional[str] = None
+ """news article source name"""
+
+ title: Optional[str] = None
+ """news article title"""
+
+ type: Optional[Literal["news", "guide"]] = None
+ """news article type"""
+
+ url: Optional[str] = None
+ """news article URL"""
+
+
+NewsGetResponse: TypeAlias = List[NewsGetResponseItem]
diff --git a/src/coingecko_sdk/types/nft_get_id_response.py b/src/coingecko_sdk/types/nft_get_id_response.py
index 39fb8a9..f2c29c7 100644
--- a/src/coingecko_sdk/types/nft_get_id_response.py
+++ b/src/coingecko_sdk/types/nft_get_id_response.py
@@ -10,7 +10,6 @@
"Ath",
"AthChangePercentage",
"AthDate",
- "BannerImage",
"Explorer",
"FloorPrice",
"FloorPrice14dPercentageChange",
@@ -52,12 +51,6 @@ class AthDate(BaseModel):
usd: Optional[datetime] = None
-class BannerImage(BaseModel):
- """NFT collection banner image url"""
-
- small: Optional[str] = None
-
-
class Explorer(BaseModel):
link: Optional[str] = None
@@ -184,7 +177,7 @@ class NFTGetIDResponse(BaseModel):
ath_date: Optional[AthDate] = None
"""NFT collection all time highs date"""
- banner_image: Optional[BannerImage] = None
+ banner_image: Optional[str] = None
"""NFT collection banner image url"""
contract_address: Optional[str] = None
@@ -278,3 +271,6 @@ class NFTGetIDResponse(BaseModel):
volume_in_usd_24h_percentage_change: Optional[float] = None
"""NFT collection volume in usd 24 hours percentage change"""
+
+ web_slug: Optional[str] = None
+ """NFT collection web slug"""
diff --git a/src/coingecko_sdk/types/nfts/contract_get_contract_address_response.py b/src/coingecko_sdk/types/nfts/contract_get_contract_address_response.py
index 9f49c8a..fbd8f22 100644
--- a/src/coingecko_sdk/types/nfts/contract_get_contract_address_response.py
+++ b/src/coingecko_sdk/types/nfts/contract_get_contract_address_response.py
@@ -10,7 +10,6 @@
"Ath",
"AthChangePercentage",
"AthDate",
- "BannerImage",
"Explorer",
"FloorPrice",
"FloorPrice14dPercentageChange",
@@ -52,12 +51,6 @@ class AthDate(BaseModel):
usd: Optional[datetime] = None
-class BannerImage(BaseModel):
- """NFT collection banner image url"""
-
- small: Optional[str] = None
-
-
class Explorer(BaseModel):
link: Optional[str] = None
@@ -184,7 +177,7 @@ class ContractGetContractAddressResponse(BaseModel):
ath_date: Optional[AthDate] = None
"""NFT collection all time highs date"""
- banner_image: Optional[BannerImage] = None
+ banner_image: Optional[str] = None
"""NFT collection banner image url"""
contract_address: Optional[str] = None
@@ -278,3 +271,6 @@ class ContractGetContractAddressResponse(BaseModel):
volume_in_usd_24h_percentage_change: Optional[float] = None
"""NFT collection volume in usd 24 hours percentage change"""
+
+ web_slug: Optional[str] = None
+ """NFT collection web slug"""
diff --git a/src/coingecko_sdk/types/onchain/networks/__init__.py b/src/coingecko_sdk/types/onchain/networks/__init__.py
index ab65a21..b48ec26 100644
--- a/src/coingecko_sdk/types/onchain/networks/__init__.py
+++ b/src/coingecko_sdk/types/onchain/networks/__init__.py
@@ -2,6 +2,7 @@
from __future__ import annotations
+from .pool_data import PoolData as PoolData
from .dex_get_params import DexGetParams as DexGetParams
from .pool_get_params import PoolGetParams as PoolGetParams
from .dex_get_response import DexGetResponse as DexGetResponse
diff --git a/src/coingecko_sdk/types/onchain/networks/dex_get_pools_response.py b/src/coingecko_sdk/types/onchain/networks/dex_get_pools_response.py
index 6a9fb73..e317ca1 100644
--- a/src/coingecko_sdk/types/onchain/networks/dex_get_pools_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/dex_get_pools_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/new_pool_get_network_response.py b/src/coingecko_sdk/types/onchain/networks/new_pool_get_network_response.py
index afa6f63..1fc6192 100644
--- a/src/coingecko_sdk/types/onchain/networks/new_pool_get_network_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/new_pool_get_network_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/new_pool_get_response.py b/src/coingecko_sdk/types/onchain/networks/new_pool_get_response.py
index 39a0605..6ad44f4 100644
--- a/src/coingecko_sdk/types/onchain/networks/new_pool_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/new_pool_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/pool_data.py b/src/coingecko_sdk/types/onchain/networks/pool_data.py
new file mode 100644
index 0000000..6db504e
--- /dev/null
+++ b/src/coingecko_sdk/types/onchain/networks/pool_data.py
@@ -0,0 +1,273 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+
+from ...._models import BaseModel
+
+__all__ = [
+ "PoolData",
+ "Attributes",
+ "AttributesBuyVolumeUsd",
+ "AttributesNetBuyVolumeUsd",
+ "AttributesPriceChangePercentage",
+ "AttributesSellVolumeUsd",
+ "AttributesTransactions",
+ "AttributesTransactionsH1",
+ "AttributesTransactionsH24",
+ "AttributesTransactionsH6",
+ "AttributesTransactionsM15",
+ "AttributesTransactionsM30",
+ "AttributesTransactionsM5",
+ "AttributesVolumeUsd",
+ "Relationships",
+ "RelationshipsBaseToken",
+ "RelationshipsBaseTokenData",
+ "RelationshipsDex",
+ "RelationshipsDexData",
+ "RelationshipsQuoteToken",
+ "RelationshipsQuoteTokenData",
+]
+
+
+class AttributesBuyVolumeUsd(BaseModel):
+ h1: Optional[str] = None
+
+ h24: Optional[str] = None
+
+ h6: Optional[str] = None
+
+ m15: Optional[str] = None
+
+ m30: Optional[str] = None
+
+ m5: Optional[str] = None
+
+
+class AttributesNetBuyVolumeUsd(BaseModel):
+ h1: Optional[str] = None
+
+ h24: Optional[str] = None
+
+ h6: Optional[str] = None
+
+ m15: Optional[str] = None
+
+ m30: Optional[str] = None
+
+ m5: Optional[str] = None
+
+
+class AttributesPriceChangePercentage(BaseModel):
+ h1: Optional[str] = None
+
+ h24: Optional[str] = None
+
+ h6: Optional[str] = None
+
+ m15: Optional[str] = None
+
+ m30: Optional[str] = None
+
+ m5: Optional[str] = None
+
+
+class AttributesSellVolumeUsd(BaseModel):
+ h1: Optional[str] = None
+
+ h24: Optional[str] = None
+
+ h6: Optional[str] = None
+
+ m15: Optional[str] = None
+
+ m30: Optional[str] = None
+
+ m5: Optional[str] = None
+
+
+class AttributesTransactionsH1(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactionsH24(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactionsM15(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactionsM30(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactionsM5(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
+class AttributesTransactions(BaseModel):
+ h1: Optional[AttributesTransactionsH1] = None
+
+ h24: Optional[AttributesTransactionsH24] = None
+
+ h6: Optional[AttributesTransactionsH6] = None
+
+ m15: Optional[AttributesTransactionsM15] = None
+
+ m30: Optional[AttributesTransactionsM30] = None
+
+ m5: Optional[AttributesTransactionsM5] = None
+
+
+class AttributesVolumeUsd(BaseModel):
+ h1: Optional[str] = None
+
+ h24: Optional[str] = None
+
+ h6: Optional[str] = None
+
+ m15: Optional[str] = None
+
+ m30: Optional[str] = None
+
+ m5: Optional[str] = None
+
+
+class Attributes(BaseModel):
+ address: Optional[str] = None
+
+ base_token_balance: Optional[str] = None
+
+ base_token_liquidity_usd: Optional[str] = None
+
+ base_token_price_native_currency: Optional[str] = None
+
+ base_token_price_quote_token: Optional[str] = None
+
+ base_token_price_usd: Optional[str] = None
+
+ buy_volume_usd: Optional[AttributesBuyVolumeUsd] = None
+
+ fdv_usd: Optional[str] = None
+
+ locked_liquidity_percentage: Optional[str] = None
+
+ market_cap_usd: Optional[str] = None
+
+ name: Optional[str] = None
+
+ net_buy_volume_usd: Optional[AttributesNetBuyVolumeUsd] = None
+
+ pool_created_at: Optional[str] = None
+
+ pool_fee_percentage: Optional[str] = None
+
+ pool_name: Optional[str] = None
+
+ price_change_percentage: Optional[AttributesPriceChangePercentage] = None
+
+ quote_token_balance: Optional[str] = None
+
+ quote_token_liquidity_usd: Optional[str] = None
+
+ quote_token_price_base_token: Optional[str] = None
+
+ quote_token_price_native_currency: Optional[str] = None
+
+ quote_token_price_usd: Optional[str] = None
+
+ reserve_in_usd: Optional[str] = None
+
+ sell_volume_usd: Optional[AttributesSellVolumeUsd] = None
+
+ transactions: Optional[AttributesTransactions] = None
+
+ volume_usd: Optional[AttributesVolumeUsd] = None
+
+
+class RelationshipsBaseTokenData(BaseModel):
+ id: Optional[str] = None
+
+ type: Optional[str] = None
+
+
+class RelationshipsBaseToken(BaseModel):
+ data: Optional[RelationshipsBaseTokenData] = None
+
+
+class RelationshipsDexData(BaseModel):
+ id: Optional[str] = None
+
+ type: Optional[str] = None
+
+
+class RelationshipsDex(BaseModel):
+ data: Optional[RelationshipsDexData] = None
+
+
+class RelationshipsQuoteTokenData(BaseModel):
+ id: Optional[str] = None
+
+ type: Optional[str] = None
+
+
+class RelationshipsQuoteToken(BaseModel):
+ data: Optional[RelationshipsQuoteTokenData] = None
+
+
+class Relationships(BaseModel):
+ base_token: Optional[RelationshipsBaseToken] = None
+
+ dex: Optional[RelationshipsDex] = None
+
+ quote_token: Optional[RelationshipsQuoteToken] = None
+
+
+class PoolData(BaseModel):
+ id: Optional[str] = None
+
+ attributes: Optional[Attributes] = None
+
+ relationships: Optional[Relationships] = None
+
+ type: Optional[str] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/pool_get_address_response.py b/src/coingecko_sdk/types/onchain/networks/pool_get_address_response.py
index 898d284..81d7189 100644
--- a/src/coingecko_sdk/types/onchain/networks/pool_get_address_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/pool_get_address_response.py
@@ -2,278 +2,10 @@
from typing import List, Optional
+from .pool_data import PoolData
from ...._models import BaseModel
-__all__ = [
- "PoolGetAddressResponse",
- "Data",
- "DataAttributes",
- "DataAttributesBuyVolumeUsd",
- "DataAttributesNetBuyVolumeUsd",
- "DataAttributesPriceChangePercentage",
- "DataAttributesSellVolumeUsd",
- "DataAttributesTransactions",
- "DataAttributesTransactionsH1",
- "DataAttributesTransactionsH24",
- "DataAttributesTransactionsH6",
- "DataAttributesTransactionsM15",
- "DataAttributesTransactionsM30",
- "DataAttributesTransactionsM5",
- "DataAttributesVolumeUsd",
- "DataRelationships",
- "DataRelationshipsBaseToken",
- "DataRelationshipsBaseTokenData",
- "DataRelationshipsDex",
- "DataRelationshipsDexData",
- "DataRelationshipsQuoteToken",
- "DataRelationshipsQuoteTokenData",
- "Included",
- "IncludedAttributes",
-]
-
-
-class DataAttributesBuyVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesNetBuyVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesPriceChangePercentage(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesSellVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesTransactionsH1(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsH24(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsH6(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM15(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM30(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM5(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactions(BaseModel):
- h1: Optional[DataAttributesTransactionsH1] = None
-
- h24: Optional[DataAttributesTransactionsH24] = None
-
- h6: Optional[DataAttributesTransactionsH6] = None
-
- m15: Optional[DataAttributesTransactionsM15] = None
-
- m30: Optional[DataAttributesTransactionsM30] = None
-
- m5: Optional[DataAttributesTransactionsM5] = None
-
-
-class DataAttributesVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributes(BaseModel):
- address: Optional[str] = None
-
- base_token_balance: Optional[str] = None
-
- base_token_liquidity_usd: Optional[str] = None
-
- base_token_price_native_currency: Optional[str] = None
-
- base_token_price_quote_token: Optional[str] = None
-
- base_token_price_usd: Optional[str] = None
-
- buy_volume_usd: Optional[DataAttributesBuyVolumeUsd] = None
-
- fdv_usd: Optional[str] = None
-
- locked_liquidity_percentage: Optional[str] = None
-
- market_cap_usd: Optional[str] = None
-
- name: Optional[str] = None
-
- net_buy_volume_usd: Optional[DataAttributesNetBuyVolumeUsd] = None
-
- 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_balance: Optional[str] = None
-
- quote_token_liquidity_usd: Optional[str] = None
-
- quote_token_price_base_token: Optional[str] = None
-
- quote_token_price_native_currency: Optional[str] = None
-
- quote_token_price_usd: Optional[str] = None
-
- reserve_in_usd: Optional[str] = None
-
- sell_volume_usd: Optional[DataAttributesSellVolumeUsd] = None
-
- transactions: Optional[DataAttributesTransactions] = None
-
- volume_usd: Optional[DataAttributesVolumeUsd] = None
-
-
-class DataRelationshipsBaseTokenData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsBaseToken(BaseModel):
- data: Optional[DataRelationshipsBaseTokenData] = None
-
-
-class DataRelationshipsDexData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsDex(BaseModel):
- data: Optional[DataRelationshipsDexData] = None
-
-
-class DataRelationshipsQuoteTokenData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsQuoteToken(BaseModel):
- data: Optional[DataRelationshipsQuoteTokenData] = None
-
-
-class DataRelationships(BaseModel):
- base_token: Optional[DataRelationshipsBaseToken] = None
-
- dex: Optional[DataRelationshipsDex] = None
-
- quote_token: Optional[DataRelationshipsQuoteToken] = None
-
-
-class Data(BaseModel):
- id: Optional[str] = None
-
- attributes: Optional[DataAttributes] = None
-
- relationships: Optional[DataRelationships] = None
-
- type: Optional[str] = None
+__all__ = ["PoolGetAddressResponse", "Included", "IncludedAttributes"]
class IncludedAttributes(BaseModel):
@@ -299,6 +31,6 @@ class Included(BaseModel):
class PoolGetAddressResponse(BaseModel):
- data: Optional[Data] = None
+ data: Optional[PoolData] = None
included: Optional[List[Included]] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/pool_get_response.py b/src/coingecko_sdk/types/onchain/networks/pool_get_response.py
index ea17ff8..7168c6d 100644
--- a/src/coingecko_sdk/types/onchain/networks/pool_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/pool_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py b/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py
index 599f359..3e68fb0 100644
--- a/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py
@@ -65,6 +65,8 @@ class DataDataAttributes(BaseModel):
coingecko_coin_id: Optional[str] = None
+ decimals: Optional[int] = None
+
description: Optional[str] = None
discord_url: Optional[str] = None
@@ -73,12 +75,14 @@ class DataDataAttributes(BaseModel):
freeze_authority: Optional[str] = None
- gt_categories_id: Optional[List[str]] = None
+ gt_category_ids: Optional[List[str]] = None
gt_score: Optional[float] = None
gt_score_details: Optional[DataDataAttributesGtScoreDetails] = None
+ gt_verified: Optional[bool] = None
+
holders: Optional[DataDataAttributesHolders] = None
image: Optional[DataDataAttributesImage] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/pools/multi_get_addresses_response.py b/src/coingecko_sdk/types/onchain/networks/pools/multi_get_addresses_response.py
index e405497..dbecbf8 100644
--- a/src/coingecko_sdk/types/onchain/networks/pools/multi_get_addresses_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/pools/multi_get_addresses_response.py
@@ -2,278 +2,10 @@
from typing import List, Optional
+from ..pool_data import PoolData
from ....._models import BaseModel
-__all__ = [
- "MultiGetAddressesResponse",
- "Data",
- "DataAttributes",
- "DataAttributesBuyVolumeUsd",
- "DataAttributesNetBuyVolumeUsd",
- "DataAttributesPriceChangePercentage",
- "DataAttributesSellVolumeUsd",
- "DataAttributesTransactions",
- "DataAttributesTransactionsH1",
- "DataAttributesTransactionsH24",
- "DataAttributesTransactionsH6",
- "DataAttributesTransactionsM15",
- "DataAttributesTransactionsM30",
- "DataAttributesTransactionsM5",
- "DataAttributesVolumeUsd",
- "DataRelationships",
- "DataRelationshipsBaseToken",
- "DataRelationshipsBaseTokenData",
- "DataRelationshipsDex",
- "DataRelationshipsDexData",
- "DataRelationshipsQuoteToken",
- "DataRelationshipsQuoteTokenData",
- "Included",
- "IncludedAttributes",
-]
-
-
-class DataAttributesBuyVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesNetBuyVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesPriceChangePercentage(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesSellVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributesTransactionsH1(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsH24(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsH6(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM15(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM30(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactionsM5(BaseModel):
- buyers: Optional[int] = None
-
- buys: Optional[int] = None
-
- sellers: Optional[int] = None
-
- sells: Optional[int] = None
-
-
-class DataAttributesTransactions(BaseModel):
- h1: Optional[DataAttributesTransactionsH1] = None
-
- h24: Optional[DataAttributesTransactionsH24] = None
-
- h6: Optional[DataAttributesTransactionsH6] = None
-
- m15: Optional[DataAttributesTransactionsM15] = None
-
- m30: Optional[DataAttributesTransactionsM30] = None
-
- m5: Optional[DataAttributesTransactionsM5] = None
-
-
-class DataAttributesVolumeUsd(BaseModel):
- h1: Optional[str] = None
-
- h24: Optional[str] = None
-
- h6: Optional[str] = None
-
- m15: Optional[str] = None
-
- m30: Optional[str] = None
-
- m5: Optional[str] = None
-
-
-class DataAttributes(BaseModel):
- address: Optional[str] = None
-
- base_token_balance: Optional[str] = None
-
- base_token_liquidity_usd: Optional[str] = None
-
- base_token_price_native_currency: Optional[str] = None
-
- base_token_price_quote_token: Optional[str] = None
-
- base_token_price_usd: Optional[str] = None
-
- buy_volume_usd: Optional[DataAttributesBuyVolumeUsd] = None
-
- fdv_usd: Optional[str] = None
-
- locked_liquidity_percentage: Optional[str] = None
-
- market_cap_usd: Optional[str] = None
-
- name: Optional[str] = None
-
- net_buy_volume_usd: Optional[DataAttributesNetBuyVolumeUsd] = None
-
- 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_balance: Optional[str] = None
-
- quote_token_liquidity_usd: Optional[str] = None
-
- quote_token_price_base_token: Optional[str] = None
-
- quote_token_price_native_currency: Optional[str] = None
-
- quote_token_price_usd: Optional[str] = None
-
- reserve_in_usd: Optional[str] = None
-
- sell_volume_usd: Optional[DataAttributesSellVolumeUsd] = None
-
- transactions: Optional[DataAttributesTransactions] = None
-
- volume_usd: Optional[DataAttributesVolumeUsd] = None
-
-
-class DataRelationshipsBaseTokenData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsBaseToken(BaseModel):
- data: Optional[DataRelationshipsBaseTokenData] = None
-
-
-class DataRelationshipsDexData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsDex(BaseModel):
- data: Optional[DataRelationshipsDexData] = None
-
-
-class DataRelationshipsQuoteTokenData(BaseModel):
- id: Optional[str] = None
-
- type: Optional[str] = None
-
-
-class DataRelationshipsQuoteToken(BaseModel):
- data: Optional[DataRelationshipsQuoteTokenData] = None
-
-
-class DataRelationships(BaseModel):
- base_token: Optional[DataRelationshipsBaseToken] = None
-
- dex: Optional[DataRelationshipsDex] = None
-
- quote_token: Optional[DataRelationshipsQuoteToken] = None
-
-
-class Data(BaseModel):
- id: Optional[str] = None
-
- attributes: Optional[DataAttributes] = None
-
- relationships: Optional[DataRelationships] = None
-
- type: Optional[str] = None
+__all__ = ["MultiGetAddressesResponse", "Included", "IncludedAttributes"]
class IncludedAttributes(BaseModel):
@@ -299,6 +31,6 @@ class Included(BaseModel):
class MultiGetAddressesResponse(BaseModel):
- data: Optional[List[Data]] = None
+ data: Optional[List[PoolData]] = None
included: Optional[List[Included]] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py b/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py
index f63f9fe..b8c5218 100644
--- a/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py
@@ -62,6 +62,8 @@ class DataAttributes(BaseModel):
coingecko_coin_id: Optional[str] = None
+ decimals: Optional[int] = None
+
description: Optional[str] = None
discord_url: Optional[str] = None
@@ -70,12 +72,14 @@ class DataAttributes(BaseModel):
freeze_authority: Optional[str] = None
- gt_categories_id: Optional[List[str]] = None
+ gt_category_ids: Optional[List[str]] = None
gt_score: Optional[float] = None
gt_score_details: Optional[DataAttributesGtScoreDetails] = None
+ gt_verified: Optional[bool] = None
+
holders: Optional[DataAttributesHolders] = None
image: Optional[DataAttributesImage] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/tokens/pool_get_response.py b/src/coingecko_sdk/types/onchain/networks/tokens/pool_get_response.py
index 6c9dd0b..c893317 100644
--- a/src/coingecko_sdk/types/onchain/networks/tokens/pool_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/tokens/pool_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -62,6 +63,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +108,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -153,6 +166,8 @@ class DataAttributes(BaseModel):
sentiment_vote_positive_percentage: Optional[float] = None
+ token_price_usd: Optional[str] = None
+
transactions: Optional[DataAttributesTransactions] = None
volume_usd: Optional[DataAttributesVolumeUsd] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/trending_pool_get_network_response.py b/src/coingecko_sdk/types/onchain/networks/trending_pool_get_network_response.py
index efbb4f7..104f78a 100644
--- a/src/coingecko_sdk/types/onchain/networks/trending_pool_get_network_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/trending_pool_get_network_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/networks/trending_pool_get_response.py b/src/coingecko_sdk/types/onchain/networks/trending_pool_get_response.py
index 2741d9c..0c9a356 100644
--- a/src/coingecko_sdk/types/onchain/networks/trending_pool_get_response.py
+++ b/src/coingecko_sdk/types/onchain/networks/trending_pool_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -176,6 +191,16 @@ 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
@@ -191,6 +216,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/pools/megafilter_get_response.py b/src/coingecko_sdk/types/onchain/pools/megafilter_get_response.py
index 66e9f37..496f03a 100644
--- a/src/coingecko_sdk/types/onchain/pools/megafilter_get_response.py
+++ b/src/coingecko_sdk/types/onchain/pools/megafilter_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -170,6 +185,16 @@ 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
@@ -185,6 +210,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/pools/trending_search_get_response.py b/src/coingecko_sdk/types/onchain/pools/trending_search_get_response.py
index 405d560..5d8e940 100644
--- a/src/coingecko_sdk/types/onchain/pools/trending_search_get_response.py
+++ b/src/coingecko_sdk/types/onchain/pools/trending_search_get_response.py
@@ -40,7 +40,7 @@ class DataAttributes(BaseModel):
reserve_in_usd: Optional[str] = None
- trending_rank: Optional[float] = None
+ trending_rank: Optional[int] = None
volume_usd: Optional[DataAttributesVolumeUsd] = None
diff --git a/src/coingecko_sdk/types/onchain/search/pool_get_params.py b/src/coingecko_sdk/types/onchain/search/pool_get_params.py
index fb0b7a7..9484fb0 100644
--- a/src/coingecko_sdk/types/onchain/search/pool_get_params.py
+++ b/src/coingecko_sdk/types/onchain/search/pool_get_params.py
@@ -21,4 +21,7 @@ class PoolGetParams(TypedDict, total=False):
"""page through results Default value: 1"""
query: str
- """search query"""
+ """
+ search query, can be pool contract address, token name, token symbol, or token
+ contract address
+ """
diff --git a/src/coingecko_sdk/types/onchain/search/pool_get_response.py b/src/coingecko_sdk/types/onchain/search/pool_get_response.py
index 269180c..909a93c 100644
--- a/src/coingecko_sdk/types/onchain/search/pool_get_response.py
+++ b/src/coingecko_sdk/types/onchain/search/pool_get_response.py
@@ -12,6 +12,7 @@
"DataAttributesTransactions",
"DataAttributesTransactionsH1",
"DataAttributesTransactionsH24",
+ "DataAttributesTransactionsH6",
"DataAttributesTransactionsM15",
"DataAttributesTransactionsM30",
"DataAttributesTransactionsM5",
@@ -21,6 +22,8 @@
"DataRelationshipsBaseTokenData",
"DataRelationshipsDex",
"DataRelationshipsDexData",
+ "DataRelationshipsNetwork",
+ "DataRelationshipsNetworkData",
"DataRelationshipsQuoteToken",
"DataRelationshipsQuoteTokenData",
"Included",
@@ -62,6 +65,16 @@ class DataAttributesTransactionsH24(BaseModel):
sells: Optional[int] = None
+class DataAttributesTransactionsH6(BaseModel):
+ buyers: Optional[int] = None
+
+ buys: Optional[int] = None
+
+ sellers: Optional[int] = None
+
+ sells: Optional[int] = None
+
+
class DataAttributesTransactionsM15(BaseModel):
buyers: Optional[int] = None
@@ -97,6 +110,8 @@ class DataAttributesTransactions(BaseModel):
h24: Optional[DataAttributesTransactionsH24] = None
+ h6: Optional[DataAttributesTransactionsH6] = None
+
m15: Optional[DataAttributesTransactionsM15] = None
m30: Optional[DataAttributesTransactionsM30] = None
@@ -170,6 +185,16 @@ 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
@@ -185,6 +210,8 @@ class DataRelationships(BaseModel):
dex: Optional[DataRelationshipsDex] = None
+ network: Optional[DataRelationshipsNetwork] = None
+
quote_token: Optional[DataRelationshipsQuoteToken] = None
diff --git a/src/coingecko_sdk/types/onchain/tokens/info_recently_updated_get_response.py b/src/coingecko_sdk/types/onchain/tokens/info_recently_updated_get_response.py
index 27e2522..5bfc66e 100644
--- a/src/coingecko_sdk/types/onchain/tokens/info_recently_updated_get_response.py
+++ b/src/coingecko_sdk/types/onchain/tokens/info_recently_updated_get_response.py
@@ -19,8 +19,14 @@ class DataAttributes(BaseModel):
coingecko_coin_id: Optional[str] = None
+ decimals: Optional[int] = None
+
description: Optional[str] = None
+ discord_url: Optional[str] = None
+
+ farcaster_url: Optional[str] = None
+
gt_score: Optional[float] = None
image_url: Optional[str] = None
@@ -31,8 +37,14 @@ class DataAttributes(BaseModel):
symbol: Optional[str] = None
+ telegram_handle: Optional[str] = None
+
+ twitter_handle: Optional[str] = None
+
websites: Optional[List[str]] = None
+ zora_url: Optional[str] = None
+
class DataRelationshipsNetworkData(BaseModel):
id: Optional[str] = None
@@ -59,4 +71,4 @@ class Data(BaseModel):
class InfoRecentlyUpdatedGetResponse(BaseModel):
- data: Optional[Data] = None
+ data: Optional[List[Data]] = None
diff --git a/src/coingecko_sdk/types/public_treasury_get_coin_id_response.py b/src/coingecko_sdk/types/public_treasury_get_coin_id_response.py
index ad65ae2..69c1ec9 100644
--- a/src/coingecko_sdk/types/public_treasury_get_coin_id_response.py
+++ b/src/coingecko_sdk/types/public_treasury_get_coin_id_response.py
@@ -4,85 +4,34 @@
from typing_extensions import TypeAlias
from .._models import BaseModel
+from .treasury_entity import TreasuryEntity
-__all__ = [
- "PublicTreasuryGetCoinIDResponse",
- "CompaniesTreasury",
- "CompaniesTreasuryCompany",
- "GovernmentsTreasury",
- "GovernmentsTreasuryGovernment",
-]
-
-
-class CompaniesTreasuryCompany(BaseModel):
- country: Optional[str] = None
- """company incorporated or government country"""
-
- name: Optional[str] = None
- """company or government name"""
-
- percentage_of_total_supply: Optional[float] = None
- """percentage of total crypto supply"""
-
- symbol: Optional[str] = None
- """company symbol"""
-
- total_current_value_usd: Optional[float] = None
- """total current value of crypto holdings in usd"""
-
- total_entry_value_usd: Optional[float] = None
- """total entry value in usd"""
-
- total_holdings: Optional[float] = None
- """total crypto holdings"""
+__all__ = ["PublicTreasuryGetCoinIDResponse", "CompaniesTreasury", "GovernmentsTreasury"]
class CompaniesTreasury(BaseModel):
- companies: List[CompaniesTreasuryCompany]
+ companies: Optional[List[TreasuryEntity]] = None
- market_cap_dominance: float
+ market_cap_dominance: Optional[float] = None
"""market cap dominance"""
- total_holdings: float
+ total_holdings: Optional[float] = None
"""total crypto holdings of companies"""
- total_value_usd: float
+ total_value_usd: Optional[float] = None
"""total crypto holdings value in usd"""
-class GovernmentsTreasuryGovernment(BaseModel):
- country: Optional[str] = None
- """company incorporated or government country"""
-
- name: Optional[str] = None
- """company or government name"""
-
- percentage_of_total_supply: Optional[float] = None
- """percentage of total crypto supply"""
-
- symbol: Optional[str] = None
- """company symbol"""
-
- total_current_value_usd: Optional[float] = None
- """total current value of crypto holdings in usd"""
-
- total_entry_value_usd: Optional[float] = None
- """total entry value in usd"""
-
- total_holdings: Optional[float] = None
- """total crypto holdings"""
-
-
class GovernmentsTreasury(BaseModel):
- governments: List[GovernmentsTreasuryGovernment]
+ governments: Optional[List[TreasuryEntity]] = None
- market_cap_dominance: float
+ market_cap_dominance: Optional[float] = None
"""market cap dominance"""
- total_holdings: float
+ total_holdings: Optional[float] = None
"""total crypto holdings of governments"""
- total_value_usd: float
+ total_value_usd: Optional[float] = None
"""total crypto holdings value in usd"""
diff --git a/src/coingecko_sdk/types/public_treasury_get_entity_id_response.py b/src/coingecko_sdk/types/public_treasury_get_entity_id_response.py
index 339c1cb..e55fc3f 100644
--- a/src/coingecko_sdk/types/public_treasury_get_entity_id_response.py
+++ b/src/coingecko_sdk/types/public_treasury_get_entity_id_response.py
@@ -19,15 +19,15 @@ class HoldingHoldingAmountChange(BaseModel):
holding amount changes over different timeframes (only present if holding_amount_change param is used)
"""
- api_14d: Optional[float] = FieldInfo(alias="14d", default=None)
+ period_14d: Optional[float] = FieldInfo(alias="14d", default=None)
- api_1y: Optional[float] = FieldInfo(alias="1y", default=None)
+ period_1y: Optional[float] = FieldInfo(alias="1y", default=None)
- api_30d: Optional[float] = FieldInfo(alias="30d", default=None)
+ period_30d: Optional[float] = FieldInfo(alias="30d", default=None)
- api_7d: Optional[float] = FieldInfo(alias="7d", default=None)
+ period_7d: Optional[float] = FieldInfo(alias="7d", default=None)
- api_90d: Optional[float] = FieldInfo(alias="90d", default=None)
+ period_90d: Optional[float] = FieldInfo(alias="90d", default=None)
ytd: Optional[float] = None
@@ -37,15 +37,15 @@ class HoldingHoldingChangePercentage(BaseModel):
holding change percentages over different timeframes (only present if holding_change_percentage param is used)
"""
- api_14d: Optional[float] = FieldInfo(alias="14d", default=None)
+ period_14d: Optional[float] = FieldInfo(alias="14d", default=None)
- api_1y: Optional[float] = FieldInfo(alias="1y", default=None)
+ period_1y: Optional[float] = FieldInfo(alias="1y", default=None)
- api_30d: Optional[float] = FieldInfo(alias="30d", default=None)
+ period_30d: Optional[float] = FieldInfo(alias="30d", default=None)
- api_7d: Optional[float] = FieldInfo(alias="7d", default=None)
+ period_7d: Optional[float] = FieldInfo(alias="7d", default=None)
- api_90d: Optional[float] = FieldInfo(alias="90d", default=None)
+ period_90d: Optional[float] = FieldInfo(alias="90d", default=None)
ytd: Optional[float] = None
diff --git a/src/coingecko_sdk/types/search/trending_get_response.py b/src/coingecko_sdk/types/search/trending_get_response.py
index 2a0c510..ecf838e 100644
--- a/src/coingecko_sdk/types/search/trending_get_response.py
+++ b/src/coingecko_sdk/types/search/trending_get_response.py
@@ -11,9 +11,11 @@
"CategoryDataMarketCapChangePercentage24h",
"Coin",
"CoinData",
+ "CoinDataContent",
"CoinDataPriceChangePercentage24h",
"NFT",
"NFTData",
+ "NFTDataContent",
]
@@ -63,6 +65,12 @@ class Category(BaseModel):
"""category web slug"""
+class CoinDataContent(BaseModel):
+ description: Optional[str] = None
+
+ title: Optional[str] = None
+
+
class CoinDataPriceChangePercentage24h(BaseModel):
"""coin price change percentage in 24 hours"""
@@ -72,7 +80,7 @@ class CoinDataPriceChangePercentage24h(BaseModel):
class CoinData(BaseModel):
- content: Optional[str] = None
+ content: Optional[CoinDataContent] = None
market_cap: Optional[str] = None
"""coin market cap in usd"""
@@ -135,8 +143,14 @@ class Coin(BaseModel):
"""coin thumb image url"""
+class NFTDataContent(BaseModel):
+ description: Optional[str] = None
+
+ title: Optional[str] = None
+
+
class NFTData(BaseModel):
- content: Optional[str] = None
+ content: Optional[NFTDataContent] = None
floor_price: Optional[str] = None
"""NFT collection floor price"""
diff --git a/src/coingecko_sdk/types/token_list_get_all_json_response.py b/src/coingecko_sdk/types/token_list_get_all_json_response.py
index 032d73a..f79fb11 100644
--- a/src/coingecko_sdk/types/token_list_get_all_json_response.py
+++ b/src/coingecko_sdk/types/token_list_get_all_json_response.py
@@ -7,7 +7,7 @@
from .._models import BaseModel
-__all__ = ["TokenListGetAllJsonResponse", "Token"]
+__all__ = ["TokenListGetAllJsonResponse", "Token", "Version"]
class Token(BaseModel):
@@ -30,6 +30,16 @@ class Token(BaseModel):
"""token symbol"""
+class Version(BaseModel):
+ """token list version"""
+
+ major: Optional[float] = None
+
+ minor: Optional[float] = None
+
+ patch: Optional[float] = None
+
+
class TokenListGetAllJsonResponse(BaseModel):
keywords: Optional[List[str]] = None
@@ -40,3 +50,6 @@ class TokenListGetAllJsonResponse(BaseModel):
timestamp: Optional[datetime] = None
tokens: Optional[List[Token]] = None
+
+ version: Optional[Version] = None
+ """token list version"""
diff --git a/src/coingecko_sdk/types/treasury_entity.py b/src/coingecko_sdk/types/treasury_entity.py
new file mode 100644
index 0000000..d842f80
--- /dev/null
+++ b/src/coingecko_sdk/types/treasury_entity.py
@@ -0,0 +1,30 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+
+from .._models import BaseModel
+
+__all__ = ["TreasuryEntity"]
+
+
+class TreasuryEntity(BaseModel):
+ country: Optional[str] = None
+ """company incorporated or government country"""
+
+ name: Optional[str] = None
+ """company or government name"""
+
+ percentage_of_total_supply: Optional[float] = None
+ """percentage of total crypto supply"""
+
+ symbol: Optional[str] = None
+ """company symbol"""
+
+ total_current_value_usd: Optional[float] = None
+ """total current value of crypto holdings in usd"""
+
+ total_entry_value_usd: Optional[float] = None
+ """total entry value in usd"""
+
+ total_holdings: Optional[float] = None
+ """total crypto holdings"""
diff --git a/tests/api_resources/test_news.py b/tests/api_resources/test_news.py
new file mode 100644
index 0000000..6eab75b
--- /dev/null
+++ b/tests/api_resources/test_news.py
@@ -0,0 +1,104 @@
+# 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_sdk import Coingecko, AsyncCoingecko
+from coingecko_sdk.types import NewsGetResponse
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestNews:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_get(self, client: Coingecko) -> None:
+ news = client.news.get()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_get_with_all_params(self, client: Coingecko) -> None:
+ news = client.news.get(
+ coin_id="coin_id",
+ language="en",
+ page=1,
+ per_page=1,
+ type="all",
+ )
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_raw_response_get(self, client: Coingecko) -> None:
+ response = client.news.with_raw_response.get()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ news = response.parse()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_streaming_response_get(self, client: Coingecko) -> None:
+ with client.news.with_streaming_response.get() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ news = response.parse()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+
+class TestAsyncNews:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_get(self, async_client: AsyncCoingecko) -> None:
+ news = await async_client.news.get()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_get_with_all_params(self, async_client: AsyncCoingecko) -> None:
+ news = await async_client.news.get(
+ coin_id="coin_id",
+ language="en",
+ page=1,
+ per_page=1,
+ type="all",
+ )
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_raw_response_get(self, async_client: AsyncCoingecko) -> None:
+ response = await async_client.news.with_raw_response.get()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ news = await response.parse()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_streaming_response_get(self, async_client: AsyncCoingecko) -> None:
+ async with async_client.news.with_streaming_response.get() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ news = await response.parse()
+ assert_matches_type(NewsGetResponse, news, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
diff --git a/tests/test_extract_files.py b/tests/test_extract_files.py
index 5a3b056..d2e3d5a 100644
--- a/tests/test_extract_files.py
+++ b/tests/test_extract_files.py
@@ -4,7 +4,7 @@
import pytest
-from coingecko_sdk._types import FileTypes
+from coingecko_sdk._types import FileTypes, ArrayFormat
from coingecko_sdk._utils import extract_files
@@ -37,10 +37,7 @@ def test_multiple_files() -> None:
def test_top_level_file_array() -> None:
query = {"files": [b"file one", b"file two"], "title": "hello"}
- assert extract_files(query, paths=[["files", ""]]) == [
- ("files[]", b"file one"),
- ("files[]", b"file two"),
- ]
+ assert extract_files(query, paths=[["files", ""]]) == [("files[]", b"file one"), ("files[]", b"file two")]
assert query == {"title": "hello"}
@@ -71,3 +68,24 @@ def test_ignores_incorrect_paths(
expected: list[tuple[str, FileTypes]],
) -> None:
assert extract_files(query, paths=paths) == expected
+
+
+@pytest.mark.parametrize(
+ "array_format,expected_top_level,expected_nested",
+ [
+ ("brackets", [("files[]", b"a"), ("files[]", b"b")], [("items[][file]", b"a"), ("items[][file]", b"b")]),
+ ("repeat", [("files", b"a"), ("files", b"b")], [("items[file]", b"a"), ("items[file]", b"b")]),
+ ("comma", [("files", b"a"), ("files", b"b")], [("items[file]", b"a"), ("items[file]", b"b")]),
+ ("indices", [("files[0]", b"a"), ("files[1]", b"b")], [("items[0][file]", b"a"), ("items[1][file]", b"b")]),
+ ],
+)
+def test_array_format_controls_file_field_names(
+ array_format: ArrayFormat,
+ expected_top_level: list[tuple[str, FileTypes]],
+ expected_nested: list[tuple[str, FileTypes]],
+) -> None:
+ top_level = {"files": [b"a", b"b"]}
+ assert extract_files(top_level, paths=[["files", ""]], array_format=array_format) == expected_top_level
+
+ nested = {"items": [{"file": b"a"}, {"file": b"b"}]}
+ assert extract_files(nested, paths=[["items", "", "file"]], array_format=array_format) == expected_nested
diff --git a/tests/test_files.py b/tests/test_files.py
index 5a49ce6..b86ea60 100644
--- a/tests/test_files.py
+++ b/tests/test_files.py
@@ -131,7 +131,7 @@ def test_extract_files_does_not_mutate_original_nested_array_path(self) -> None:
copied = deepcopy_with_paths(original, [["items", "", "file"]])
extracted = extract_files(copied, paths=[["items", "", "file"]])
- assert extracted == [("items[][file]", file1), ("items[][file]", file2)]
+ assert [entry for _, entry in extracted] == [file1, file2]
assert original == {
"items": [
{"file": file1, "extra": 1},