From 44b1a5686a50e43703bfc437afc6dfcc0696bfe7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 10:11:34 +0000 Subject: [PATCH 1/6] codegen metadata --- .stats.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index bb221715..bf6d91fb 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 618 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-1089f2c131ebee7df82e158c4210c07f019b47549d84fe6ea7f022117c83a008.yml -openapi_spec_hash: 9758acbadc1ee1bc0d826d4657e1ad4a -config_hash: 79098512b2ff15053f2813524c207add +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-03327bc118eb0ed98401ef3a157dc7e41173f62114095077f3f49247af7b62a5.yml +openapi_spec_hash: 446c1f8864f2d965b3eece233c5a6b22 +config_hash: db560bc3873a6441828babf34ae5f184 From 2c780f329064bcabb64492d7a237f9865feffd14 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:15:45 +0000 Subject: [PATCH 2/6] feat(api): aggregated API specs update --- .stats.yml | 4 +-- src/gcore/resources/storage/credentials.py | 28 ------------------- src/gcore/resources/storage/storage.py | 4 +-- .../storage/credential_recreate_params.py | 17 ----------- src/gcore/types/storage/storage.py | 2 +- .../types/storage/storage_create_params.py | 2 +- .../api_resources/storage/test_credentials.py | 12 ++++---- .../api_resources/storage/test_statistics.py | 8 +++--- tests/api_resources/test_storage.py | 16 +++++------ 9 files changed, 24 insertions(+), 69 deletions(-) diff --git a/.stats.yml b/.stats.yml index bf6d91fb..5a78a97e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 618 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-03327bc118eb0ed98401ef3a157dc7e41173f62114095077f3f49247af7b62a5.yml -openapi_spec_hash: 446c1f8864f2d965b3eece233c5a6b22 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c358b756aa348a1c6a982fa7af3c5134289f9951a0b2e348d5c5d796cd68a9b9.yml +openapi_spec_hash: 8f53b4d77c357ba5d34d47ec447ec57b config_hash: db560bc3873a6441828babf34ae5f184 diff --git a/src/gcore/resources/storage/credentials.py b/src/gcore/resources/storage/credentials.py index 1db372ae..616afdb8 100644 --- a/src/gcore/resources/storage/credentials.py +++ b/src/gcore/resources/storage/credentials.py @@ -62,20 +62,6 @@ def recreate( password for SFTP storage). Args: - delete_sftp_password: Remove the SFTP password, disabling password authentication. Only applicable to - SFTP storage type. - - generate_s3_keys: Generate new S3 access and secret keys for S3 storage. Only applicable to S3 - storage type. - - generate_sftp_password: Generate a new random password for SFTP access. Only applicable to SFTP storage - type. - - reset_sftp_keys: Reset/remove all SSH keys associated with the SFTP storage. Only applicable to - SFTP storage type. - - sftp_password: Set a custom password for SFTP access. Only applicable to SFTP storage type. - extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -144,20 +130,6 @@ async def recreate( password for SFTP storage). Args: - delete_sftp_password: Remove the SFTP password, disabling password authentication. Only applicable to - SFTP storage type. - - generate_s3_keys: Generate new S3 access and secret keys for S3 storage. Only applicable to S3 - storage type. - - generate_sftp_password: Generate a new random password for SFTP access. Only applicable to SFTP storage - type. - - reset_sftp_keys: Reset/remove all SSH keys associated with the SFTP storage. Only applicable to - SFTP storage type. - - sftp_password: Set a custom password for SFTP access. Only applicable to SFTP storage type. - extra_headers: Send extra headers extra_query: Add additional query parameters to the request diff --git a/src/gcore/resources/storage/storage.py b/src/gcore/resources/storage/storage.py index c3a2d71e..afc3922f 100644 --- a/src/gcore/resources/storage/storage.py +++ b/src/gcore/resources/storage/storage.py @@ -95,7 +95,7 @@ def with_streaming_response(self) -> StorageResourceWithStreamingResponse: def create( self, *, - location: Literal["s-ed1", "s-drc2", "s-sgc1", "s-nhn2", "s-darz", "s-ws1", "ams", "sin", "fra", "mia"], + location: str, name: str, type: Literal["sftp", "s3"], generate_sftp_password: bool | Omit = omit, @@ -499,7 +499,7 @@ def with_streaming_response(self) -> AsyncStorageResourceWithStreamingResponse: async def create( self, *, - location: Literal["s-ed1", "s-drc2", "s-sgc1", "s-nhn2", "s-darz", "s-ws1", "ams", "sin", "fra", "mia"], + location: str, name: str, type: Literal["sftp", "s3"], generate_sftp_password: bool | Omit = omit, diff --git a/src/gcore/types/storage/credential_recreate_params.py b/src/gcore/types/storage/credential_recreate_params.py index d0b7c608..6ddf0375 100644 --- a/src/gcore/types/storage/credential_recreate_params.py +++ b/src/gcore/types/storage/credential_recreate_params.py @@ -9,28 +9,11 @@ class CredentialRecreateParams(TypedDict, total=False): delete_sftp_password: bool - """Remove the SFTP password, disabling password authentication. - - Only applicable to SFTP storage type. - """ generate_s3_keys: bool - """Generate new S3 access and secret keys for S3 storage. - - Only applicable to S3 storage type. - """ generate_sftp_password: bool - """Generate a new random password for SFTP access. - - Only applicable to SFTP storage type. - """ reset_sftp_keys: bool - """Reset/remove all SSH keys associated with the SFTP storage. - - Only applicable to SFTP storage type. - """ sftp_password: str - """Set a custom password for SFTP access. Only applicable to SFTP storage type.""" diff --git a/src/gcore/types/storage/storage.py b/src/gcore/types/storage/storage.py index 6c02f31b..126b5a7d 100644 --- a/src/gcore/types/storage/storage.py +++ b/src/gcore/types/storage/storage.py @@ -53,7 +53,7 @@ class Storage(BaseModel): created_at: str """ISO 8601 timestamp when the storage was created""" - location: Literal["s-ed1", "s-drc2", "s-sgc1", "s-nhn2", "s-darz", "s-ws1", "ams", "sin", "fra", "mia"] + location: str """Geographic location code where the storage is provisioned""" name: str diff --git a/src/gcore/types/storage/storage_create_params.py b/src/gcore/types/storage/storage_create_params.py index b3a6cc62..e5582029 100644 --- a/src/gcore/types/storage/storage_create_params.py +++ b/src/gcore/types/storage/storage_create_params.py @@ -8,7 +8,7 @@ class StorageCreateParams(TypedDict, total=False): - location: Required[Literal["s-ed1", "s-drc2", "s-sgc1", "s-nhn2", "s-darz", "s-ws1", "ams", "sin", "fra", "mia"]] + location: Required[str] """Geographic location where the storage will be provisioned. Each location represents a specific data center region. diff --git a/tests/api_resources/storage/test_credentials.py b/tests/api_resources/storage/test_credentials.py index caf6bc59..8f02e9d0 100644 --- a/tests/api_resources/storage/test_credentials.py +++ b/tests/api_resources/storage/test_credentials.py @@ -28,11 +28,11 @@ def test_method_recreate(self, client: Gcore) -> None: def test_method_recreate_with_all_params(self, client: Gcore) -> None: credential = client.storage.credentials.recreate( storage_id=0, - delete_sftp_password=False, + delete_sftp_password=True, generate_s3_keys=True, generate_sftp_password=True, - reset_sftp_keys=False, - sftp_password="MyNewSecurePassword123", + reset_sftp_keys=True, + sftp_password="sftp_password", ) assert_matches_type(Storage, credential, path=["response"]) @@ -77,11 +77,11 @@ async def test_method_recreate(self, async_client: AsyncGcore) -> None: async def test_method_recreate_with_all_params(self, async_client: AsyncGcore) -> None: credential = await async_client.storage.credentials.recreate( storage_id=0, - delete_sftp_password=False, + delete_sftp_password=True, generate_s3_keys=True, generate_sftp_password=True, - reset_sftp_keys=False, - sftp_password="MyNewSecurePassword123", + reset_sftp_keys=True, + sftp_password="sftp_password", ) assert_matches_type(Storage, credential, path=["response"]) diff --git a/tests/api_resources/storage/test_statistics.py b/tests/api_resources/storage/test_statistics.py index 4c4739fd..7bcb3e22 100644 --- a/tests/api_resources/storage/test_statistics.py +++ b/tests/api_resources/storage/test_statistics.py @@ -29,7 +29,7 @@ def test_method_get_usage_aggregated(self, client: Gcore) -> None: def test_method_get_usage_aggregated_with_all_params(self, client: Gcore) -> None: statistic = client.storage.statistics.get_usage_aggregated( from_="2006-01-02", - locations=["s-ed1", "s-drc2", "s-sgc1"], + locations=["s-region-1", "s-region-2"], storages=["123-myStorage"], to="2006-01-02", ) @@ -65,7 +65,7 @@ def test_method_get_usage_series_with_all_params(self, client: Gcore) -> None: statistic = client.storage.statistics.get_usage_series( from_="2006-01-02", granularity="12h", - locations=["s-ed1", "s-drc2", "s-sgc1"], + locations=["s-region-1", "s-region-2"], source=0, storages=["123-myStorage"], to="2006-01-02", @@ -108,7 +108,7 @@ async def test_method_get_usage_aggregated(self, async_client: AsyncGcore) -> No async def test_method_get_usage_aggregated_with_all_params(self, async_client: AsyncGcore) -> None: statistic = await async_client.storage.statistics.get_usage_aggregated( from_="2006-01-02", - locations=["s-ed1", "s-drc2", "s-sgc1"], + locations=["s-region-1", "s-region-2"], storages=["123-myStorage"], to="2006-01-02", ) @@ -144,7 +144,7 @@ async def test_method_get_usage_series_with_all_params(self, async_client: Async statistic = await async_client.storage.statistics.get_usage_series( from_="2006-01-02", granularity="12h", - locations=["s-ed1", "s-drc2", "s-sgc1"], + locations=["s-region-1", "s-region-2"], source=0, storages=["123-myStorage"], to="2006-01-02", diff --git a/tests/api_resources/test_storage.py b/tests/api_resources/test_storage.py index b66d14c9..00988587 100644 --- a/tests/api_resources/test_storage.py +++ b/tests/api_resources/test_storage.py @@ -23,7 +23,7 @@ class TestStorage: @parametrize def test_method_create(self, client: Gcore) -> None: storage = client.storage.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) @@ -32,7 +32,7 @@ def test_method_create(self, client: Gcore) -> None: @parametrize def test_method_create_with_all_params(self, client: Gcore) -> None: storage = client.storage.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", generate_sftp_password=True, @@ -43,7 +43,7 @@ def test_method_create_with_all_params(self, client: Gcore) -> None: @parametrize def test_raw_response_create(self, client: Gcore) -> None: response = client.storage.with_raw_response.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) @@ -56,7 +56,7 @@ def test_raw_response_create(self, client: Gcore) -> None: @parametrize def test_streaming_response_create(self, client: Gcore) -> None: with client.storage.with_streaming_response.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) as response: @@ -327,7 +327,7 @@ class TestAsyncStorage: @parametrize async def test_method_create(self, async_client: AsyncGcore) -> None: storage = await async_client.storage.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) @@ -336,7 +336,7 @@ async def test_method_create(self, async_client: AsyncGcore) -> None: @parametrize async def test_method_create_with_all_params(self, async_client: AsyncGcore) -> None: storage = await async_client.storage.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", generate_sftp_password=True, @@ -347,7 +347,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncGcore) -> @parametrize async def test_raw_response_create(self, async_client: AsyncGcore) -> None: response = await async_client.storage.with_raw_response.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) @@ -360,7 +360,7 @@ async def test_raw_response_create(self, async_client: AsyncGcore) -> None: @parametrize async def test_streaming_response_create(self, async_client: AsyncGcore) -> None: async with async_client.storage.with_streaming_response.create( - location="s-ed1", + location="s-region-1", name="my-storage-prod", type="s3", ) as response: From 846946265537791605e00dd260d5bd1a8eb7bddf Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 12:15:57 +0000 Subject: [PATCH 3/6] feat(api): aggregated API specs update --- .stats.yml | 4 +-- src/gcore/resources/security/bgp_announces.py | 4 --- src/gcore/resources/security/profiles.py | 26 ++++++++++++++----- .../security/bgp_announce_list_params.py | 2 -- .../types/security/profile_create_params.py | 5 ++-- .../types/security/profile_recreate_params.py | 5 ++-- .../types/security/profile_replace_params.py | 5 ++-- .../security/test_bgp_announces.py | 2 -- tests/api_resources/security/test_profiles.py | 4 +-- 9 files changed, 32 insertions(+), 25 deletions(-) diff --git a/.stats.yml b/.stats.yml index 5a78a97e..23e684ec 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 618 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c358b756aa348a1c6a982fa7af3c5134289f9951a0b2e348d5c5d796cd68a9b9.yml -openapi_spec_hash: 8f53b4d77c357ba5d34d47ec447ec57b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c98c3c0bf29fd07be3ff871bfac3cdc39c55c353207b7b33c6c448ab4f4cc845.yml +openapi_spec_hash: d77a4fabd08324c4e401d0d50c9a13c7 config_hash: db560bc3873a6441828babf34ae5f184 diff --git a/src/gcore/resources/security/bgp_announces.py b/src/gcore/resources/security/bgp_announces.py index 26b3bc96..1908f05a 100644 --- a/src/gcore/resources/security/bgp_announces.py +++ b/src/gcore/resources/security/bgp_announces.py @@ -48,7 +48,6 @@ def list( self, *, announced: Optional[bool] | Omit = omit, - client_id: Optional[int] | Omit = omit, origin: Optional[Literal["STATIC", "DYNAMIC"]] | Omit = omit, site: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -83,7 +82,6 @@ def list( query=maybe_transform( { "announced": announced, - "client_id": client_id, "origin": origin, "site": site, }, @@ -165,7 +163,6 @@ async def list( self, *, announced: Optional[bool] | Omit = omit, - client_id: Optional[int] | Omit = omit, origin: Optional[Literal["STATIC", "DYNAMIC"]] | Omit = omit, site: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -200,7 +197,6 @@ async def list( query=await async_maybe_transform( { "announced": announced, - "client_id": client_id, "origin": origin, "site": site, }, diff --git a/src/gcore/resources/security/profiles.py b/src/gcore/resources/security/profiles.py index 2ddf3257..6b397fdd 100644 --- a/src/gcore/resources/security/profiles.py +++ b/src/gcore/resources/security/profiles.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Iterable import httpx @@ -55,7 +55,7 @@ def create( fields: Iterable[profile_create_params.Field], profile_template: int, site: str, - ip_address: Optional[str] | Omit = omit, + ip_address: str | 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, @@ -69,6 +69,8 @@ def create( created Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -212,7 +214,7 @@ def recreate( *, fields: Iterable[profile_recreate_params.Field], profile_template: int, - ip_address: Optional[str] | Omit = omit, + ip_address: str | Omit = omit, site: str | 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. @@ -225,6 +227,8 @@ def recreate( Recreate profile with another profile template (for other cases use detail API) Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -256,7 +260,7 @@ def replace( *, fields: Iterable[profile_replace_params.Field], profile_template: int, - ip_address: Optional[str] | Omit = omit, + ip_address: str | Omit = omit, site: str | 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. @@ -271,6 +275,8 @@ def replace( updated Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -323,7 +329,7 @@ async def create( fields: Iterable[profile_create_params.Field], profile_template: int, site: str, - ip_address: Optional[str] | Omit = omit, + ip_address: str | 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, @@ -337,6 +343,8 @@ async def create( created Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -480,7 +488,7 @@ async def recreate( *, fields: Iterable[profile_recreate_params.Field], profile_template: int, - ip_address: Optional[str] | Omit = omit, + ip_address: str | Omit = omit, site: str | 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. @@ -493,6 +501,8 @@ async def recreate( Recreate profile with another profile template (for other cases use detail API) Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -524,7 +534,7 @@ async def replace( *, fields: Iterable[profile_replace_params.Field], profile_template: int, - ip_address: Optional[str] | Omit = omit, + ip_address: str | Omit = omit, site: str | 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. @@ -539,6 +549,8 @@ async def replace( updated Args: + ip_address: Required for Universal template only. Optional for all others. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request diff --git a/src/gcore/types/security/bgp_announce_list_params.py b/src/gcore/types/security/bgp_announce_list_params.py index 390464fe..2bc6a994 100644 --- a/src/gcore/types/security/bgp_announce_list_params.py +++ b/src/gcore/types/security/bgp_announce_list_params.py @@ -11,8 +11,6 @@ class BgpAnnounceListParams(TypedDict, total=False): announced: Optional[bool] - client_id: Optional[int] - origin: Optional[Literal["STATIC", "DYNAMIC"]] site: Optional[str] diff --git a/src/gcore/types/security/profile_create_params.py b/src/gcore/types/security/profile_create_params.py index ad7b982c..fccbc6a5 100644 --- a/src/gcore/types/security/profile_create_params.py +++ b/src/gcore/types/security/profile_create_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Iterable from typing_extensions import Required, TypedDict __all__ = ["ProfileCreateParams", "Field"] @@ -15,7 +15,8 @@ class ProfileCreateParams(TypedDict, total=False): site: Required[str] - ip_address: Optional[str] + ip_address: str + """Required for Universal template only. Optional for all others.""" class Field(TypedDict, total=False): diff --git a/src/gcore/types/security/profile_recreate_params.py b/src/gcore/types/security/profile_recreate_params.py index e1dd3d10..c0f4e097 100644 --- a/src/gcore/types/security/profile_recreate_params.py +++ b/src/gcore/types/security/profile_recreate_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Iterable from typing_extensions import Required, TypedDict __all__ = ["ProfileRecreateParams", "Field"] @@ -13,7 +13,8 @@ class ProfileRecreateParams(TypedDict, total=False): profile_template: Required[int] - ip_address: Optional[str] + ip_address: str + """Required for Universal template only. Optional for all others.""" site: str diff --git a/src/gcore/types/security/profile_replace_params.py b/src/gcore/types/security/profile_replace_params.py index 9684dffd..9d472c12 100644 --- a/src/gcore/types/security/profile_replace_params.py +++ b/src/gcore/types/security/profile_replace_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Iterable from typing_extensions import Required, TypedDict __all__ = ["ProfileReplaceParams", "Field"] @@ -13,7 +13,8 @@ class ProfileReplaceParams(TypedDict, total=False): profile_template: Required[int] - ip_address: Optional[str] + ip_address: str + """Required for Universal template only. Optional for all others.""" site: str diff --git a/tests/api_resources/security/test_bgp_announces.py b/tests/api_resources/security/test_bgp_announces.py index c1115976..8907ce2f 100644 --- a/tests/api_resources/security/test_bgp_announces.py +++ b/tests/api_resources/security/test_bgp_announces.py @@ -26,7 +26,6 @@ def test_method_list(self, client: Gcore) -> None: def test_method_list_with_all_params(self, client: Gcore) -> None: bgp_announce = client.security.bgp_announces.list( announced=True, - client_id=0, origin="STATIC", site="x", ) @@ -110,7 +109,6 @@ async def test_method_list(self, async_client: AsyncGcore) -> None: async def test_method_list_with_all_params(self, async_client: AsyncGcore) -> None: bgp_announce = await async_client.security.bgp_announces.list( announced=True, - client_id=0, origin="STATIC", site="x", ) diff --git a/tests/api_resources/security/test_profiles.py b/tests/api_resources/security/test_profiles.py index c79499ab..38fdfe70 100644 --- a/tests/api_resources/security/test_profiles.py +++ b/tests/api_resources/security/test_profiles.py @@ -83,7 +83,7 @@ def test_method_list_with_all_params(self, client: Gcore) -> None: exclude_empty_address=True, include_deleted=True, ip_address="ip_address", - site="site", + site="ED", ) assert_matches_type(ProfileListResponse, profile, path=["response"]) @@ -344,7 +344,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncGcore) -> No exclude_empty_address=True, include_deleted=True, ip_address="ip_address", - site="site", + site="ED", ) assert_matches_type(ProfileListResponse, profile, path=["response"]) From 00be2a9da75503640bb2ce1383162c48170ef819 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:10:55 +0000 Subject: [PATCH 4/6] feat(api): aggregated API specs update --- .stats.yml | 4 ++-- src/gcore/types/cloud/gpu_baremetal_cluster.py | 7 +++++-- .../gpu_baremetal_cluster_server.py | 7 +++++-- src/gcore/types/cloud/gpu_image.py | 9 +++++++++ src/gcore/types/cloud/image.py | 9 +++++++++ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/.stats.yml b/.stats.yml index 23e684ec..9ebd1994 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 618 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c98c3c0bf29fd07be3ff871bfac3cdc39c55c353207b7b33c6c448ab4f4cc845.yml -openapi_spec_hash: d77a4fabd08324c4e401d0d50c9a13c7 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c4c5dfe1ae880783e8245a2e920d681bd4f5aca8836e040aa190d3bf7e2430d6.yml +openapi_spec_hash: 96ef539de84a44456e5700c9b1526666 config_hash: db560bc3873a6441828babf34ae5f184 diff --git a/src/gcore/types/cloud/gpu_baremetal_cluster.py b/src/gcore/types/cloud/gpu_baremetal_cluster.py index 373678bf..d2d67eca 100644 --- a/src/gcore/types/cloud/gpu_baremetal_cluster.py +++ b/src/gcore/types/cloud/gpu_baremetal_cluster.py @@ -94,8 +94,11 @@ class ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer(BaseModel): class ServersSettingsSecurityGroup(BaseModel): + id: str + """Security group ID""" + name: str - """Name.""" + """Security group name""" class ServersSettings(BaseModel): @@ -105,7 +108,7 @@ class ServersSettings(BaseModel): interfaces: List[ServersSettingsInterface] security_groups: List[ServersSettingsSecurityGroup] - """Security groups names""" + """Security groups""" ssh_key_name: Optional[str] = None """SSH key name""" diff --git a/src/gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py b/src/gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py index 58a99830..d2e11700 100644 --- a/src/gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +++ b/src/gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py @@ -11,8 +11,11 @@ class SecurityGroup(BaseModel): + id: str + """Security group ID""" + name: str - """Name.""" + """Security group name""" class GPUBaremetalClusterServer(BaseModel): @@ -35,7 +38,7 @@ class GPUBaremetalClusterServer(BaseModel): """Server's name generated using cluster's name""" security_groups: List[SecurityGroup] - """Security groups names""" + """Security groups""" ssh_key_name: Optional[str] = None """SSH key pair assigned to the server""" diff --git a/src/gcore/types/cloud/gpu_image.py b/src/gcore/types/cloud/gpu_image.py index a5335c77..31a90256 100644 --- a/src/gcore/types/cloud/gpu_image.py +++ b/src/gcore/types/cloud/gpu_image.py @@ -47,6 +47,15 @@ class GPUImage(BaseModel): architecture: Optional[str] = None """Image architecture type""" + gpu_driver: Optional[str] = None + """Name of the GPU driver vendor""" + + gpu_driver_type: Optional[str] = None + """Type of the GPU driver""" + + gpu_driver_version: Optional[str] = None + """Version of the installed GPU driver""" + os_distro: Optional[str] = None """OS Distribution""" diff --git a/src/gcore/types/cloud/image.py b/src/gcore/types/cloud/image.py index 2ab1b799..901b0436 100644 --- a/src/gcore/types/cloud/image.py +++ b/src/gcore/types/cloud/image.py @@ -80,6 +80,15 @@ class Image(BaseModel): display_order: Optional[int] = None + gpu_driver: Optional[str] = None + """Name of the GPU driver vendor""" + + gpu_driver_type: Optional[str] = None + """Type of the GPU driver""" + + gpu_driver_version: Optional[str] = None + """Version of the installed GPU driver""" + hw_firmware_type: Optional[Literal["bios", "uefi"]] = None """Specifies the type of firmware with which to boot the guest.""" From 7c0231aa3836ea9ab69769c2c06fe3fb70ca4a7b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:11:32 +0000 Subject: [PATCH 5/6] feat(api): aggregated API specs update --- .stats.yml | 4 ++-- src/gcore/resources/security/profiles.py | 12 ++++++++++++ src/gcore/types/security/client_profile.py | 1 + src/gcore/types/security/profile_create_params.py | 1 + src/gcore/types/security/profile_recreate_params.py | 1 + src/gcore/types/security/profile_replace_params.py | 1 + 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 9ebd1994..934a1512 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 618 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-c4c5dfe1ae880783e8245a2e920d681bd4f5aca8836e040aa190d3bf7e2430d6.yml -openapi_spec_hash: 96ef539de84a44456e5700c9b1526666 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-29e2cc8d4eccb3e6657d61c17d200583cc2bd5bd90494b331881256e362d5873.yml +openapi_spec_hash: de6249d14f251ef0a008dd506e0e99ef config_hash: db560bc3873a6441828babf34ae5f184 diff --git a/src/gcore/resources/security/profiles.py b/src/gcore/resources/security/profiles.py index 6b397fdd..13cfdcfa 100644 --- a/src/gcore/resources/security/profiles.py +++ b/src/gcore/resources/security/profiles.py @@ -69,6 +69,8 @@ def create( created Args: + site: Region where the protection profiles will be deployed + ip_address: Required for Universal template only. Optional for all others. extra_headers: Send extra headers @@ -229,6 +231,8 @@ def recreate( Args: ip_address: Required for Universal template only. Optional for all others. + site: Region where the protection profiles will be deployed + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -277,6 +281,8 @@ def replace( Args: ip_address: Required for Universal template only. Optional for all others. + site: Region where the protection profiles will be deployed + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -343,6 +349,8 @@ async def create( created Args: + site: Region where the protection profiles will be deployed + ip_address: Required for Universal template only. Optional for all others. extra_headers: Send extra headers @@ -503,6 +511,8 @@ async def recreate( Args: ip_address: Required for Universal template only. Optional for all others. + site: Region where the protection profiles will be deployed + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -551,6 +561,8 @@ async def replace( Args: ip_address: Required for Universal template only. Optional for all others. + site: Region where the protection profiles will be deployed + extra_headers: Send extra headers extra_query: Add additional query parameters to the request diff --git a/src/gcore/types/security/client_profile.py b/src/gcore/types/security/client_profile.py index e02111b5..7cf11bbb 100644 --- a/src/gcore/types/security/client_profile.py +++ b/src/gcore/types/security/client_profile.py @@ -50,6 +50,7 @@ class ClientProfile(BaseModel): protocols: List[Dict[str, object]] site: str + """Region where the protection profiles will be deployed""" status: Dict[str, object] diff --git a/src/gcore/types/security/profile_create_params.py b/src/gcore/types/security/profile_create_params.py index fccbc6a5..a26e0d2a 100644 --- a/src/gcore/types/security/profile_create_params.py +++ b/src/gcore/types/security/profile_create_params.py @@ -14,6 +14,7 @@ class ProfileCreateParams(TypedDict, total=False): profile_template: Required[int] site: Required[str] + """Region where the protection profiles will be deployed""" ip_address: str """Required for Universal template only. Optional for all others.""" diff --git a/src/gcore/types/security/profile_recreate_params.py b/src/gcore/types/security/profile_recreate_params.py index c0f4e097..4c6718fe 100644 --- a/src/gcore/types/security/profile_recreate_params.py +++ b/src/gcore/types/security/profile_recreate_params.py @@ -17,6 +17,7 @@ class ProfileRecreateParams(TypedDict, total=False): """Required for Universal template only. Optional for all others.""" site: str + """Region where the protection profiles will be deployed""" class Field(TypedDict, total=False): diff --git a/src/gcore/types/security/profile_replace_params.py b/src/gcore/types/security/profile_replace_params.py index 9d472c12..eb4e5ca8 100644 --- a/src/gcore/types/security/profile_replace_params.py +++ b/src/gcore/types/security/profile_replace_params.py @@ -17,6 +17,7 @@ class ProfileReplaceParams(TypedDict, total=False): """Required for Universal template only. Optional for all others.""" site: str + """Region where the protection profiles will be deployed""" class Field(TypedDict, total=False): From 614d8e80ab0fa30a5bf771b76c0ffd0739901b16 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:11:53 +0000 Subject: [PATCH 6/6] release: 0.19.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 11 +++++++++++ pyproject.toml | 2 +- src/gcore/_version.py | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4ad3fef3..e7562934 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.18.0" + ".": "0.19.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index f73fd479..658b8393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 0.19.0 (2025-11-07) + +Full Changelog: [v0.18.0...v0.19.0](https://github.com/G-Core/gcore-python/compare/v0.18.0...v0.19.0) + +### Features + +* **api:** aggregated API specs update ([7c0231a](https://github.com/G-Core/gcore-python/commit/7c0231aa3836ea9ab69769c2c06fe3fb70ca4a7b)) +* **api:** aggregated API specs update ([00be2a9](https://github.com/G-Core/gcore-python/commit/00be2a9da75503640bb2ce1383162c48170ef819)) +* **api:** aggregated API specs update ([8469462](https://github.com/G-Core/gcore-python/commit/846946265537791605e00dd260d5bd1a8eb7bddf)) +* **api:** aggregated API specs update ([2c780f3](https://github.com/G-Core/gcore-python/commit/2c780f329064bcabb64492d7a237f9865feffd14)) + ## 0.18.0 (2025-11-04) Full Changelog: [v0.17.0...v0.18.0](https://github.com/G-Core/gcore-python/compare/v0.17.0...v0.18.0) diff --git a/pyproject.toml b/pyproject.toml index 9de98340..e1d7434a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gcore" -version = "0.18.0" +version = "0.19.0" description = "The official Python library for the gcore API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/gcore/_version.py b/src/gcore/_version.py index 4e588aa0..54b67f1e 100644 --- a/src/gcore/_version.py +++ b/src/gcore/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "gcore" -__version__ = "0.18.0" # x-release-please-version +__version__ = "0.19.0" # x-release-please-version