From 777de0fe66b85660e24847c55779e8b3dc2c1945 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:39:30 +0000 Subject: [PATCH 1/4] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index f6bc2e9b..4d056b8b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 645 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-2d64161889a53046ca5e593a772328a5290246c3d74f8c07fed1037feae1bdbc.yml -openapi_spec_hash: 2360d25764d74e6972cf600fcd20fd4e +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-61da4ea9147efbd920bf7eb3e4c790787145f67e9e119a5269a358d48fa83d92.yml +openapi_spec_hash: 49f7e7bd1cde8953248eecea9ecc84df config_hash: e9e5b750687e9071d8b606963f0ffd6d From a2328c02b6d94f8af8cdeb7dbc72d81f1e2d17d0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:15:12 +0000 Subject: [PATCH 2/4] chore(ci): upgrade `actions/github-script` --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21d8baf0..30235252 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,7 +63,7 @@ jobs: - name: Get GitHub OIDC Token if: github.repository == 'stainless-sdks/gcore-python' id: github-oidc - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: script: core.setOutput('github_token', await core.getIDToken()); From a7076d04fa78e4ea71b148ef8c10d0013536e904 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 08:15:06 +0000 Subject: [PATCH 3/4] feat(api): aggregated API specs update --- .stats.yml | 4 ++-- src/gcore/types/cdn/cdn_resource.py | 9 +++++++-- src/gcore/types/cdn/resource_create_params.py | 9 +++++++-- src/gcore/types/cdn/resource_replace_params.py | 9 +++++++-- src/gcore/types/cdn/resource_update_params.py | 9 +++++++-- src/gcore/types/cdn/resources/cdn_resource_rule.py | 9 +++++++-- src/gcore/types/cdn/resources/rule_create_params.py | 9 +++++++-- src/gcore/types/cdn/resources/rule_replace_params.py | 9 +++++++-- src/gcore/types/cdn/resources/rule_update_params.py | 9 +++++++-- src/gcore/types/cdn/rule_template.py | 9 +++++++-- src/gcore/types/cdn/rule_template_create_params.py | 9 +++++++-- src/gcore/types/cdn/rule_template_replace_params.py | 9 +++++++-- src/gcore/types/cdn/rule_template_update_params.py | 9 +++++++-- tests/api_resources/cdn/resources/test_rules.py | 12 ++++++------ tests/api_resources/cdn/test_resources.py | 12 ++++++------ tests/api_resources/cdn/test_rule_templates.py | 12 ++++++------ 16 files changed, 104 insertions(+), 44 deletions(-) diff --git a/.stats.yml b/.stats.yml index 4d056b8b..cd2e413f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 645 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-61da4ea9147efbd920bf7eb3e4c790787145f67e9e119a5269a358d48fa83d92.yml -openapi_spec_hash: 49f7e7bd1cde8953248eecea9ecc84df +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-dc42eef367287a7e7bcd1a562a519594fd3ac1b50ee86cfd8c6337b334dfbf25.yml +openapi_spec_hash: e72c6e3d4a64c6fc34a6b73431e65fba config_hash: e9e5b750687e9071d8b606963f0ffd6d diff --git a/src/gcore/types/cdn/cdn_resource.py b/src/gcore/types/cdn/cdn_resource.py index a1066729..760e9ee1 100644 --- a/src/gcore/types/cdn/cdn_resource.py +++ b/src/gcore/types/cdn/cdn_resource.py @@ -790,6 +790,7 @@ class OptionsIPAddressACL(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1592,6 +1593,9 @@ class OptionsUserAgentACL(BaseModel): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1823,8 +1827,9 @@ class Options(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resource_create_params.py b/src/gcore/types/cdn/resource_create_params.py index 09c122d2..743fba2a 100644 --- a/src/gcore/types/cdn/resource_create_params.py +++ b/src/gcore/types/cdn/resource_create_params.py @@ -913,6 +913,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1713,6 +1714,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1944,8 +1948,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resource_replace_params.py b/src/gcore/types/cdn/resource_replace_params.py index e1ab08b8..fb57bb77 100644 --- a/src/gcore/types/cdn/resource_replace_params.py +++ b/src/gcore/types/cdn/resource_replace_params.py @@ -891,6 +891,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1691,6 +1692,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1922,8 +1926,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resource_update_params.py b/src/gcore/types/cdn/resource_update_params.py index c231f15d..92251e5c 100644 --- a/src/gcore/types/cdn/resource_update_params.py +++ b/src/gcore/types/cdn/resource_update_params.py @@ -882,6 +882,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1682,6 +1683,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1913,8 +1917,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resources/cdn_resource_rule.py b/src/gcore/types/cdn/resources/cdn_resource_rule.py index 2b61a6d2..c28f6e6a 100644 --- a/src/gcore/types/cdn/resources/cdn_resource_rule.py +++ b/src/gcore/types/cdn/resources/cdn_resource_rule.py @@ -762,6 +762,7 @@ class OptionsIPAddressACL(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1474,6 +1475,9 @@ class OptionsUserAgentACL(BaseModel): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1699,8 +1703,9 @@ class Options(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resources/rule_create_params.py b/src/gcore/types/cdn/resources/rule_create_params.py index 9d48700f..052803bb 100644 --- a/src/gcore/types/cdn/resources/rule_create_params.py +++ b/src/gcore/types/cdn/resources/rule_create_params.py @@ -838,6 +838,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1548,6 +1549,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1773,8 +1777,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resources/rule_replace_params.py b/src/gcore/types/cdn/resources/rule_replace_params.py index 44a3a9f7..86fb2b30 100644 --- a/src/gcore/types/cdn/resources/rule_replace_params.py +++ b/src/gcore/types/cdn/resources/rule_replace_params.py @@ -840,6 +840,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1550,6 +1551,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1775,8 +1779,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/resources/rule_update_params.py b/src/gcore/types/cdn/resources/rule_update_params.py index a689c70f..c4ae3b10 100644 --- a/src/gcore/types/cdn/resources/rule_update_params.py +++ b/src/gcore/types/cdn/resources/rule_update_params.py @@ -840,6 +840,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1550,6 +1551,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1775,8 +1779,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/rule_template.py b/src/gcore/types/cdn/rule_template.py index 12360cca..e23d3805 100644 --- a/src/gcore/types/cdn/rule_template.py +++ b/src/gcore/types/cdn/rule_template.py @@ -762,6 +762,7 @@ class OptionsIPAddressACL(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1474,6 +1475,9 @@ class OptionsUserAgentACL(BaseModel): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1699,8 +1703,9 @@ class Options(BaseModel): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/rule_template_create_params.py b/src/gcore/types/cdn/rule_template_create_params.py index 5a000d28..6d44873b 100644 --- a/src/gcore/types/cdn/rule_template_create_params.py +++ b/src/gcore/types/cdn/rule_template_create_params.py @@ -822,6 +822,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1532,6 +1533,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1757,8 +1761,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/rule_template_replace_params.py b/src/gcore/types/cdn/rule_template_replace_params.py index 4af0182e..7dba15b1 100644 --- a/src/gcore/types/cdn/rule_template_replace_params.py +++ b/src/gcore/types/cdn/rule_template_replace_params.py @@ -822,6 +822,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1532,6 +1533,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1757,8 +1761,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/src/gcore/types/cdn/rule_template_update_params.py b/src/gcore/types/cdn/rule_template_update_params.py index 8d45b593..37b2ec5b 100644 --- a/src/gcore/types/cdn/rule_template_update_params.py +++ b/src/gcore/types/cdn/rule_template_update_params.py @@ -822,6 +822,7 @@ class OptionsIPAddressACL(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, you have to independently monitor their relevance. + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ @@ -1532,6 +1533,9 @@ class OptionsUserAgentACL(TypedDict, total=False): - **allow** - List of User-Agents for which access is prohibited. - **deny** - List of User-Agents for which access is allowed. + You can provide exact User-Agent strings or regular expressions. Regular + expressions must start with `~` (case-sensitive) or `~*` (case-insensitive). + Use an empty string `""` to allow/deny access when the User-Agent header is empty. """ @@ -1757,8 +1761,9 @@ class Options(TypedDict, total=False): """Controls access to the CDN resource content for specific IP addresses. If you want to use IPs from our CDN servers IP list for IP ACL configuration, - you have to independently monitor their relevance. We recommend you use a script - for automatically update IP ACL. + you have to independently monitor their relevance. + + We recommend you use a script for automatically update IP ACL. [Read more.](/docs/api-reference/cdn/ip-addresses-list/get-cdn-servers-ip-addresses) """ diff --git a/tests/api_resources/cdn/resources/test_rules.py b/tests/api_resources/cdn/resources/test_rules.py index 63940c96..351ea91b 100644 --- a/tests/api_resources/cdn/resources/test_rules.py +++ b/tests/api_resources/cdn/resources/test_rules.py @@ -291,7 +291,7 @@ def test_method_create_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -607,7 +607,7 @@ def test_method_update_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1024,7 +1024,7 @@ def test_method_replace_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1349,7 +1349,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1665,7 +1665,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -2082,7 +2082,7 @@ async def test_method_replace_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { diff --git a/tests/api_resources/cdn/test_resources.py b/tests/api_resources/cdn/test_resources.py index debacd03..a987d85b 100644 --- a/tests/api_resources/cdn/test_resources.py +++ b/tests/api_resources/cdn/test_resources.py @@ -311,7 +311,7 @@ def test_method_create_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -652,7 +652,7 @@ def test_method_update_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1281,7 +1281,7 @@ def test_method_replace_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1627,7 +1627,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1968,7 +1968,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -2597,7 +2597,7 @@ async def test_method_replace_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { diff --git a/tests/api_resources/cdn/test_rule_templates.py b/tests/api_resources/cdn/test_rule_templates.py index cf4af42c..e7d8cb23 100644 --- a/tests/api_resources/cdn/test_rule_templates.py +++ b/tests/api_resources/cdn/test_rule_templates.py @@ -287,7 +287,7 @@ def test_method_create_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -595,7 +595,7 @@ def test_method_update_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -994,7 +994,7 @@ def test_method_replace_with_all_params(self, client: Gcore) -> None: }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1312,7 +1312,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -1620,7 +1620,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { @@ -2019,7 +2019,7 @@ async def test_method_replace_with_all_params(self, async_client: AsyncGcore) -> }, "user_agent_acl": { "enabled": True, - "excepted_values": ["UserAgent Value", ""], + "excepted_values": ["UserAgent Value", "~*.*bot.*", ""], "policy_type": "allow", }, "waap": { From dc948ebd50a1535d0e33f6e95abb129cadfc4ae5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 08:15:48 +0000 Subject: [PATCH 4/4] release: 0.31.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- src/gcore/_version.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 554e34bb..f81bf992 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.30.0" + ".": "0.31.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1511c56c..3783714b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 0.31.0 (2026-01-26) + +Full Changelog: [v0.30.0...v0.31.0](https://github.com/G-Core/gcore-python/compare/v0.30.0...v0.31.0) + +### Features + +* **api:** aggregated API specs update ([a7076d0](https://github.com/G-Core/gcore-python/commit/a7076d04fa78e4ea71b148ef8c10d0013536e904)) + + +### Chores + +* **ci:** upgrade `actions/github-script` ([a2328c0](https://github.com/G-Core/gcore-python/commit/a2328c02b6d94f8af8cdeb7dbc72d81f1e2d17d0)) + ## 0.30.0 (2026-01-22) Full Changelog: [v0.29.0...v0.30.0](https://github.com/G-Core/gcore-python/compare/v0.29.0...v0.30.0) diff --git a/pyproject.toml b/pyproject.toml index 26af6423..3ad9b84a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gcore" -version = "0.30.0" +version = "0.31.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 574d5dd3..d06a94b9 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.30.0" # x-release-please-version +__version__ = "0.31.0" # x-release-please-version