diff --git a/.stats.yml b/.stats.yml
index 99f947826a0..850f0030958 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 2184
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-3d7d43f051a510c54ae71adb4b85cbb422565a40942cde4de0c3f8eb6ba8023b.yml
-openapi_spec_hash: e85824f16c3ba923a34e514c06dac7cd
-config_hash: a84b6a70b6374c30a50b477fe248eb3a
+configured_endpoints: 2192
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-8e03d0874fc41902f7e931896b4a36b5f67d282e407dd8c488971f7c21b77383.yml
+openapi_spec_hash: 50ad0379843478562ee9630f95d94475
+config_hash: a9df5f26701f581fbf876dcc7094ab00
diff --git a/src/cloudflare/resources/audit_logs.py b/src/cloudflare/resources/audit_logs.py
deleted file mode 100644
index 1a682f5ac0e..00000000000
--- a/src/cloudflare/resources/audit_logs.py
+++ /dev/null
@@ -1,276 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Union
-from datetime import date, datetime
-from typing_extensions import Literal
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
-from .._utils import 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 ..pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.audit_logs import audit_log_list_params
-from ..types.shared.audit_log import AuditLog
-
-__all__ = ["AuditLogsResource", "AsyncAuditLogsResource"]
-
-
-class AuditLogsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AuditLogsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AuditLogsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AuditLogsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AuditLogsResourceWithStreamingResponse(self)
-
- def list(
- self,
- *,
- account_id: str,
- id: str | Omit = omit,
- action: audit_log_list_params.Action | Omit = omit,
- actor: audit_log_list_params.Actor | Omit = omit,
- before: Union[Union[str, date], Union[str, datetime]] | Omit = omit,
- direction: Literal["desc", "asc"] | Omit = omit,
- export: bool | Omit = omit,
- hide_user_logs: bool | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- since: Union[Union[str, date], Union[str, datetime]] | Omit = omit,
- zone: audit_log_list_params.Zone | 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,
- ) -> SyncV4PagePaginationArray[AuditLog]:
- """Gets a list of audit logs for an account.
-
- Can be filtered by who made the
- change, on which zone, and the timeframe of the change.
-
- Args:
- account_id: Identifier
-
- id: Finds a specific log by its ID.
-
- before: Limits the returned results to logs older than the specified date. A `full-date`
- that conforms to RFC3339.
-
- direction: Changes the direction of the chronological sorting.
-
- export: Indicates that this request is an export of logs in CSV format.
-
- hide_user_logs: Indicates whether or not to hide user level audit logs.
-
- page: Defines which page of results to return.
-
- per_page: Sets the number of results to return per page.
-
- since: Limits the returned results to logs newer than the specified date. A `full-date`
- that conforms to RFC3339.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/audit_logs",
- page=SyncV4PagePaginationArray[AuditLog],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "id": id,
- "action": action,
- "actor": actor,
- "before": before,
- "direction": direction,
- "export": export,
- "hide_user_logs": hide_user_logs,
- "page": page,
- "per_page": per_page,
- "since": since,
- "zone": zone,
- },
- audit_log_list_params.AuditLogListParams,
- ),
- ),
- model=AuditLog,
- )
-
-
-class AsyncAuditLogsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncAuditLogsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncAuditLogsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncAuditLogsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncAuditLogsResourceWithStreamingResponse(self)
-
- def list(
- self,
- *,
- account_id: str,
- id: str | Omit = omit,
- action: audit_log_list_params.Action | Omit = omit,
- actor: audit_log_list_params.Actor | Omit = omit,
- before: Union[Union[str, date], Union[str, datetime]] | Omit = omit,
- direction: Literal["desc", "asc"] | Omit = omit,
- export: bool | Omit = omit,
- hide_user_logs: bool | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- since: Union[Union[str, date], Union[str, datetime]] | Omit = omit,
- zone: audit_log_list_params.Zone | 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,
- ) -> AsyncPaginator[AuditLog, AsyncV4PagePaginationArray[AuditLog]]:
- """Gets a list of audit logs for an account.
-
- Can be filtered by who made the
- change, on which zone, and the timeframe of the change.
-
- Args:
- account_id: Identifier
-
- id: Finds a specific log by its ID.
-
- before: Limits the returned results to logs older than the specified date. A `full-date`
- that conforms to RFC3339.
-
- direction: Changes the direction of the chronological sorting.
-
- export: Indicates that this request is an export of logs in CSV format.
-
- hide_user_logs: Indicates whether or not to hide user level audit logs.
-
- page: Defines which page of results to return.
-
- per_page: Sets the number of results to return per page.
-
- since: Limits the returned results to logs newer than the specified date. A `full-date`
- that conforms to RFC3339.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/audit_logs",
- page=AsyncV4PagePaginationArray[AuditLog],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "id": id,
- "action": action,
- "actor": actor,
- "before": before,
- "direction": direction,
- "export": export,
- "hide_user_logs": hide_user_logs,
- "page": page,
- "per_page": per_page,
- "since": since,
- "zone": zone,
- },
- audit_log_list_params.AuditLogListParams,
- ),
- ),
- model=AuditLog,
- )
-
-
-class AuditLogsResourceWithRawResponse:
- def __init__(self, audit_logs: AuditLogsResource) -> None:
- self._audit_logs = audit_logs
-
- self.list = to_raw_response_wrapper(
- audit_logs.list,
- )
-
-
-class AsyncAuditLogsResourceWithRawResponse:
- def __init__(self, audit_logs: AsyncAuditLogsResource) -> None:
- self._audit_logs = audit_logs
-
- self.list = async_to_raw_response_wrapper(
- audit_logs.list,
- )
-
-
-class AuditLogsResourceWithStreamingResponse:
- def __init__(self, audit_logs: AuditLogsResource) -> None:
- self._audit_logs = audit_logs
-
- self.list = to_streamed_response_wrapper(
- audit_logs.list,
- )
-
-
-class AsyncAuditLogsResourceWithStreamingResponse:
- def __init__(self, audit_logs: AsyncAuditLogsResource) -> None:
- self._audit_logs = audit_logs
-
- self.list = async_to_streamed_response_wrapper(
- audit_logs.list,
- )
diff --git a/src/cloudflare/resources/bot_management.py b/src/cloudflare/resources/bot_management.py
deleted file mode 100644
index 07b76763411..00000000000
--- a/src/cloudflare/resources/bot_management.py
+++ /dev/null
@@ -1,1274 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Any, Optional, cast
-from typing_extensions import Literal, overload
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
-from .._utils import required_args, 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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.bot_management import bot_management_update_params
-from ..types.bot_management.bot_management_get_response import BotManagementGetResponse
-from ..types.bot_management.bot_management_update_response import BotManagementUpdateResponse
-
-__all__ = ["BotManagementResource", "AsyncBotManagementResource"]
-
-
-class BotManagementResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> BotManagementResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return BotManagementResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> BotManagementResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return BotManagementResourceWithStreamingResponse(self)
-
- @overload
- def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- fight_mode: bool | Omit = omit,
- is_robots_txt_managed: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- fight_mode: Whether to enable Bot Fight Mode.
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- 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
- """
- ...
-
- @overload
- def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- optimize_wordpress: Whether to optimize Super Bot Fight Mode protections for Wordpress.
-
- sbfm_definitely_automated: Super Bot Fight Mode (SBFM) action to take on definitely automated requests.
-
- sbfm_static_resource_protection: Super Bot Fight Mode (SBFM) to enable static resource protection. Enable if
- static resources on your application need bot protection. Note: Static resource
- protection can also result in legitimate traffic being blocked.
-
- sbfm_verified_bots: Super Bot Fight Mode (SBFM) action to take on verified bots requests.
-
- 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
- """
- ...
-
- @overload
- def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_likely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- optimize_wordpress: Whether to optimize Super Bot Fight Mode protections for Wordpress.
-
- sbfm_definitely_automated: Super Bot Fight Mode (SBFM) action to take on definitely automated requests.
-
- sbfm_likely_automated: Super Bot Fight Mode (SBFM) action to take on likely automated requests.
-
- sbfm_static_resource_protection: Super Bot Fight Mode (SBFM) to enable static resource protection. Enable if
- static resources on your application need bot protection. Note: Static resource
- protection can also result in legitimate traffic being blocked.
-
- sbfm_verified_bots: Super Bot Fight Mode (SBFM) action to take on verified bots requests.
-
- 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
- """
- ...
-
- @overload
- def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- auto_update_model: bool | Omit = omit,
- bm_cookie_enabled: bool | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- suppress_session_score: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- auto_update_model: Automatically update to the newest bot detection models created by Cloudflare as
- they are released.
- [Learn more.](https://developers.cloudflare.com/bots/reference/machine-learning-models#model-versions-and-release-notes)
-
- bm_cookie_enabled: Indicates that the bot management cookie can be placed on end user devices
- accessing the site. Defaults to true
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- suppress_session_score: Whether to disable tracking the highest bot score for a session in the Bot
- Management cookie.
-
- 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
- """
- ...
-
- @required_args(["zone_id"])
- def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- fight_mode: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | Omit = omit,
- sbfm_likely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- auto_update_model: bool | Omit = omit,
- bm_cookie_enabled: bool | Omit = omit,
- suppress_session_score: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return cast(
- Optional[BotManagementUpdateResponse],
- self._put(
- f"/zones/{zone_id}/bot_management",
- body=maybe_transform(
- {
- "ai_bots_protection": ai_bots_protection,
- "cf_robots_variant": cf_robots_variant,
- "crawler_protection": crawler_protection,
- "enable_js": enable_js,
- "fight_mode": fight_mode,
- "is_robots_txt_managed": is_robots_txt_managed,
- "optimize_wordpress": optimize_wordpress,
- "sbfm_definitely_automated": sbfm_definitely_automated,
- "sbfm_static_resource_protection": sbfm_static_resource_protection,
- "sbfm_verified_bots": sbfm_verified_bots,
- "sbfm_likely_automated": sbfm_likely_automated,
- "auto_update_model": auto_update_model,
- "bm_cookie_enabled": bm_cookie_enabled,
- "suppress_session_score": suppress_session_score,
- },
- bot_management_update_params.BotManagementUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[BotManagementUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[BotManagementUpdateResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[BotManagementGetResponse]:
- """
- Retrieve a zone's Bot Management Config
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return cast(
- Optional[BotManagementGetResponse],
- self._get(
- f"/zones/{zone_id}/bot_management",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[BotManagementGetResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[BotManagementGetResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
-
-class AsyncBotManagementResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncBotManagementResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncBotManagementResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncBotManagementResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncBotManagementResourceWithStreamingResponse(self)
-
- @overload
- async def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- fight_mode: bool | Omit = omit,
- is_robots_txt_managed: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- fight_mode: Whether to enable Bot Fight Mode.
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- 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
- """
- ...
-
- @overload
- async def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- optimize_wordpress: Whether to optimize Super Bot Fight Mode protections for Wordpress.
-
- sbfm_definitely_automated: Super Bot Fight Mode (SBFM) action to take on definitely automated requests.
-
- sbfm_static_resource_protection: Super Bot Fight Mode (SBFM) to enable static resource protection. Enable if
- static resources on your application need bot protection. Note: Static resource
- protection can also result in legitimate traffic being blocked.
-
- sbfm_verified_bots: Super Bot Fight Mode (SBFM) action to take on verified bots requests.
-
- 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
- """
- ...
-
- @overload
- async def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_likely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- optimize_wordpress: Whether to optimize Super Bot Fight Mode protections for Wordpress.
-
- sbfm_definitely_automated: Super Bot Fight Mode (SBFM) action to take on definitely automated requests.
-
- sbfm_likely_automated: Super Bot Fight Mode (SBFM) action to take on likely automated requests.
-
- sbfm_static_resource_protection: Super Bot Fight Mode (SBFM) to enable static resource protection. Enable if
- static resources on your application need bot protection. Note: Static resource
- protection can also result in legitimate traffic being blocked.
-
- sbfm_verified_bots: Super Bot Fight Mode (SBFM) action to take on verified bots requests.
-
- 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
- """
- ...
-
- @overload
- async def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- auto_update_model: bool | Omit = omit,
- bm_cookie_enabled: bool | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- suppress_session_score: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- """
- Updates the Bot Management configuration for a zone.
-
- This API is used to update:
-
- - **Bot Fight Mode**
- - **Super Bot Fight Mode**
- - **Bot Management for Enterprise**
-
- See [Bot Plans](https://developers.cloudflare.com/bots/plans/) for more
- information on the different plans \\
- If you recently upgraded or downgraded your plan, refer to the following examples
- to clean up old configurations. Copy and paste the example body to remove old zone
- configurations based on your current plan.
-
- #### Clean up configuration for Bot Fight Mode plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "suppress_session_score": false
- }
- ```
-
- #### Clean up configuration for SBFM Pro plan
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for SBFM Biz plan
-
- ```json
- {
- "fight_mode": false
- }
- ```
-
- #### Clean up configuration for BM Enterprise Subscription plan
-
- It is strongly recommended that you ensure you have
- [custom rules](https://developers.cloudflare.com/waf/custom-rules/) in place to
- protect your zone before disabling the SBFM rules. Without these protections,
- your zone is vulnerable to attacks.
-
- ```json
- {
- "sbfm_likely_automated": "allow",
- "sbfm_definitely_automated": "allow",
- "sbfm_verified_bots": "allow",
- "sbfm_static_resource_protection": false,
- "optimize_wordpress": false,
- "fight_mode": false
- }
- ```
-
- Args:
- zone_id: Identifier.
-
- ai_bots_protection: Enable rule to block AI Scrapers and Crawlers. Please note the value
- `only_on_ad_pages` is currently not available for Enterprise customers.
-
- auto_update_model: Automatically update to the newest bot detection models created by Cloudflare as
- they are released.
- [Learn more.](https://developers.cloudflare.com/bots/reference/machine-learning-models#model-versions-and-release-notes)
-
- bm_cookie_enabled: Indicates that the bot management cookie can be placed on end user devices
- accessing the site. Defaults to true
-
- cf_robots_variant: Specifies the Robots Access Control License variant to use.
-
- crawler_protection: Enable rule to punish AI Scrapers and Crawlers via a link maze.
-
- enable_js: Use lightweight, invisible JavaScript detections to improve Bot Management.
- [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).
-
- is_robots_txt_managed: Enable cloudflare managed robots.txt. If an existing robots.txt is detected,
- then managed robots.txt will be prepended to the existing robots.txt.
-
- suppress_session_score: Whether to disable tracking the highest bot score for a session in the Bot
- Management cookie.
-
- 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
- """
- ...
-
- @required_args(["zone_id"])
- async def update(
- self,
- *,
- zone_id: str,
- ai_bots_protection: Literal["block", "disabled", "only_on_ad_pages"] | Omit = omit,
- cf_robots_variant: Literal["off", "policy_only"] | Omit = omit,
- crawler_protection: Literal["enabled", "disabled"] | Omit = omit,
- enable_js: bool | Omit = omit,
- fight_mode: bool | Omit = omit,
- is_robots_txt_managed: bool | Omit = omit,
- optimize_wordpress: bool | Omit = omit,
- sbfm_definitely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- sbfm_static_resource_protection: bool | Omit = omit,
- sbfm_verified_bots: Literal["allow", "block"] | Omit = omit,
- sbfm_likely_automated: Literal["allow", "block", "managed_challenge"] | Omit = omit,
- auto_update_model: bool | Omit = omit,
- bm_cookie_enabled: bool | Omit = omit,
- suppress_session_score: bool | 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,
- ) -> Optional[BotManagementUpdateResponse]:
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return cast(
- Optional[BotManagementUpdateResponse],
- await self._put(
- f"/zones/{zone_id}/bot_management",
- body=await async_maybe_transform(
- {
- "ai_bots_protection": ai_bots_protection,
- "cf_robots_variant": cf_robots_variant,
- "crawler_protection": crawler_protection,
- "enable_js": enable_js,
- "fight_mode": fight_mode,
- "is_robots_txt_managed": is_robots_txt_managed,
- "optimize_wordpress": optimize_wordpress,
- "sbfm_definitely_automated": sbfm_definitely_automated,
- "sbfm_static_resource_protection": sbfm_static_resource_protection,
- "sbfm_verified_bots": sbfm_verified_bots,
- "sbfm_likely_automated": sbfm_likely_automated,
- "auto_update_model": auto_update_model,
- "bm_cookie_enabled": bm_cookie_enabled,
- "suppress_session_score": suppress_session_score,
- },
- bot_management_update_params.BotManagementUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[BotManagementUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[BotManagementUpdateResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[BotManagementGetResponse]:
- """
- Retrieve a zone's Bot Management Config
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return cast(
- Optional[BotManagementGetResponse],
- await self._get(
- f"/zones/{zone_id}/bot_management",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[BotManagementGetResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[BotManagementGetResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
-
-class BotManagementResourceWithRawResponse:
- def __init__(self, bot_management: BotManagementResource) -> None:
- self._bot_management = bot_management
-
- self.update = to_raw_response_wrapper(
- bot_management.update,
- )
- self.get = to_raw_response_wrapper(
- bot_management.get,
- )
-
-
-class AsyncBotManagementResourceWithRawResponse:
- def __init__(self, bot_management: AsyncBotManagementResource) -> None:
- self._bot_management = bot_management
-
- self.update = async_to_raw_response_wrapper(
- bot_management.update,
- )
- self.get = async_to_raw_response_wrapper(
- bot_management.get,
- )
-
-
-class BotManagementResourceWithStreamingResponse:
- def __init__(self, bot_management: BotManagementResource) -> None:
- self._bot_management = bot_management
-
- self.update = to_streamed_response_wrapper(
- bot_management.update,
- )
- self.get = to_streamed_response_wrapper(
- bot_management.get,
- )
-
-
-class AsyncBotManagementResourceWithStreamingResponse:
- def __init__(self, bot_management: AsyncBotManagementResource) -> None:
- self._bot_management = bot_management
-
- self.update = async_to_streamed_response_wrapper(
- bot_management.update,
- )
- self.get = async_to_streamed_response_wrapper(
- bot_management.get,
- )
diff --git a/src/cloudflare/resources/brand_protection/v2/matches.py b/src/cloudflare/resources/brand_protection/v2/matches.py
index aecd7fca0f9..5a7fd653fae 100644
--- a/src/cloudflare/resources/brand_protection/v2/matches.py
+++ b/src/cloudflare/resources/brand_protection/v2/matches.py
@@ -65,12 +65,13 @@ def get(
"""
Get paginated list of domain matches for one or more brand protection queries.
When multiple query_ids are provided (comma-separated), matches are deduplicated
- across queries and each match includes a matched_queries array.
+ across queries and each match includes a match_details array with per-match
+ query metadata and individual dismissed state.
Args:
query_id: Query ID or comma-separated list of Query IDs. When multiple IDs are provided,
- matches are deduplicated across queries and each match includes matched_queries
- and match_ids arrays.
+ matches are deduplicated across queries and each match includes a match_details
+ array with per-match query metadata and dismissed state.
domain_search: Filter matches by domain name (substring match)
@@ -159,12 +160,13 @@ async def get(
"""
Get paginated list of domain matches for one or more brand protection queries.
When multiple query_ids are provided (comma-separated), matches are deduplicated
- across queries and each match includes a matched_queries array.
+ across queries and each match includes a match_details array with per-match
+ query metadata and individual dismissed state.
Args:
query_id: Query ID or comma-separated list of Query IDs. When multiple IDs are provided,
- matches are deduplicated across queries and each match includes matched_queries
- and match_ids arrays.
+ matches are deduplicated across queries and each match includes a match_details
+ array with per-match query metadata and dismissed state.
domain_search: Filter matches by domain name (substring match)
diff --git a/src/cloudflare/resources/cache/__init__.py b/src/cloudflare/resources/cache/__init__.py
index faa73ad7735..5b2d2fe4555 100644
--- a/src/cloudflare/resources/cache/__init__.py
+++ b/src/cloudflare/resources/cache/__init__.py
@@ -32,6 +32,14 @@
SmartTieredCacheResourceWithStreamingResponse,
AsyncSmartTieredCacheResourceWithStreamingResponse,
)
+from .origin_cloud_regions import (
+ OriginCloudRegionsResource,
+ AsyncOriginCloudRegionsResource,
+ OriginCloudRegionsResourceWithRawResponse,
+ AsyncOriginCloudRegionsResourceWithRawResponse,
+ OriginCloudRegionsResourceWithStreamingResponse,
+ AsyncOriginCloudRegionsResourceWithStreamingResponse,
+)
from .regional_tiered_cache import (
RegionalTieredCacheResource,
AsyncRegionalTieredCacheResource,
@@ -66,6 +74,12 @@
"AsyncRegionalTieredCacheResourceWithRawResponse",
"RegionalTieredCacheResourceWithStreamingResponse",
"AsyncRegionalTieredCacheResourceWithStreamingResponse",
+ "OriginCloudRegionsResource",
+ "AsyncOriginCloudRegionsResource",
+ "OriginCloudRegionsResourceWithRawResponse",
+ "AsyncOriginCloudRegionsResourceWithRawResponse",
+ "OriginCloudRegionsResourceWithStreamingResponse",
+ "AsyncOriginCloudRegionsResourceWithStreamingResponse",
"CacheResource",
"AsyncCacheResource",
"CacheResourceWithRawResponse",
diff --git a/src/cloudflare/resources/cache/api.md b/src/cloudflare/resources/cache/api.md
index aa7b9c376b3..3bbb74056ef 100644
--- a/src/cloudflare/resources/cache/api.md
+++ b/src/cloudflare/resources/cache/api.md
@@ -86,3 +86,32 @@ Methods:
- client.cache.regional_tiered_cache.edit(\*, zone_id, \*\*params) -> Optional[RegionalTieredCacheEditResponse]
- client.cache.regional_tiered_cache.get(\*, zone_id) -> Optional[RegionalTieredCacheGetResponse]
+
+## OriginCloudRegions
+
+Types:
+
+```python
+from cloudflare.types.cache import (
+ OriginCloudRegion,
+ OriginCloudRegionCreateResponse,
+ OriginCloudRegionListResponse,
+ OriginCloudRegionDeleteResponse,
+ OriginCloudRegionBulkDeleteResponse,
+ OriginCloudRegionBulkEditResponse,
+ OriginCloudRegionEditResponse,
+ OriginCloudRegionGetResponse,
+ OriginCloudRegionSupportedRegionsResponse,
+)
+```
+
+Methods:
+
+- client.cache.origin_cloud_regions.create(\*, zone_id, \*\*params) -> Optional[OriginCloudRegionCreateResponse]
+- client.cache.origin_cloud_regions.list(\*, zone_id) -> Optional[OriginCloudRegionListResponse]
+- client.cache.origin_cloud_regions.delete(origin_ip, \*, zone_id) -> Optional[OriginCloudRegionDeleteResponse]
+- client.cache.origin_cloud_regions.bulk_delete(\*, zone_id) -> Optional[OriginCloudRegionBulkDeleteResponse]
+- client.cache.origin_cloud_regions.bulk_edit(\*, zone_id, \*\*params) -> Optional[OriginCloudRegionBulkEditResponse]
+- client.cache.origin_cloud_regions.edit(\*, zone_id, \*\*params) -> Optional[OriginCloudRegionEditResponse]
+- client.cache.origin_cloud_regions.get(origin_ip, \*, zone_id) -> Optional[OriginCloudRegionGetResponse]
+- client.cache.origin_cloud_regions.supported_regions(\*, zone_id) -> Optional[OriginCloudRegionSupportedRegionsResponse]
diff --git a/src/cloudflare/resources/cache/cache.py b/src/cloudflare/resources/cache/cache.py
index 140c5cce06f..7e6637ff05b 100644
--- a/src/cloudflare/resources/cache/cache.py
+++ b/src/cloudflare/resources/cache/cache.py
@@ -44,6 +44,14 @@
SmartTieredCacheResourceWithStreamingResponse,
AsyncSmartTieredCacheResourceWithStreamingResponse,
)
+from .origin_cloud_regions import (
+ OriginCloudRegionsResource,
+ AsyncOriginCloudRegionsResource,
+ OriginCloudRegionsResourceWithRawResponse,
+ AsyncOriginCloudRegionsResourceWithRawResponse,
+ OriginCloudRegionsResourceWithStreamingResponse,
+ AsyncOriginCloudRegionsResourceWithStreamingResponse,
+)
from .regional_tiered_cache import (
RegionalTieredCacheResource,
AsyncRegionalTieredCacheResource,
@@ -74,6 +82,10 @@ def variants(self) -> VariantsResource:
def regional_tiered_cache(self) -> RegionalTieredCacheResource:
return RegionalTieredCacheResource(self._client)
+ @cached_property
+ def origin_cloud_regions(self) -> OriginCloudRegionsResource:
+ return OriginCloudRegionsResource(self._client)
+
@cached_property
def with_raw_response(self) -> CacheResourceWithRawResponse:
"""
@@ -767,6 +779,10 @@ def variants(self) -> AsyncVariantsResource:
def regional_tiered_cache(self) -> AsyncRegionalTieredCacheResource:
return AsyncRegionalTieredCacheResource(self._client)
+ @cached_property
+ def origin_cloud_regions(self) -> AsyncOriginCloudRegionsResource:
+ return AsyncOriginCloudRegionsResource(self._client)
+
@cached_property
def with_raw_response(self) -> AsyncCacheResourceWithRawResponse:
"""
@@ -1467,6 +1483,10 @@ def variants(self) -> VariantsResourceWithRawResponse:
def regional_tiered_cache(self) -> RegionalTieredCacheResourceWithRawResponse:
return RegionalTieredCacheResourceWithRawResponse(self._cache.regional_tiered_cache)
+ @cached_property
+ def origin_cloud_regions(self) -> OriginCloudRegionsResourceWithRawResponse:
+ return OriginCloudRegionsResourceWithRawResponse(self._cache.origin_cloud_regions)
+
class AsyncCacheResourceWithRawResponse:
def __init__(self, cache: AsyncCacheResource) -> None:
@@ -1492,6 +1512,10 @@ def variants(self) -> AsyncVariantsResourceWithRawResponse:
def regional_tiered_cache(self) -> AsyncRegionalTieredCacheResourceWithRawResponse:
return AsyncRegionalTieredCacheResourceWithRawResponse(self._cache.regional_tiered_cache)
+ @cached_property
+ def origin_cloud_regions(self) -> AsyncOriginCloudRegionsResourceWithRawResponse:
+ return AsyncOriginCloudRegionsResourceWithRawResponse(self._cache.origin_cloud_regions)
+
class CacheResourceWithStreamingResponse:
def __init__(self, cache: CacheResource) -> None:
@@ -1517,6 +1541,10 @@ def variants(self) -> VariantsResourceWithStreamingResponse:
def regional_tiered_cache(self) -> RegionalTieredCacheResourceWithStreamingResponse:
return RegionalTieredCacheResourceWithStreamingResponse(self._cache.regional_tiered_cache)
+ @cached_property
+ def origin_cloud_regions(self) -> OriginCloudRegionsResourceWithStreamingResponse:
+ return OriginCloudRegionsResourceWithStreamingResponse(self._cache.origin_cloud_regions)
+
class AsyncCacheResourceWithStreamingResponse:
def __init__(self, cache: AsyncCacheResource) -> None:
@@ -1541,3 +1569,7 @@ def variants(self) -> AsyncVariantsResourceWithStreamingResponse:
@cached_property
def regional_tiered_cache(self) -> AsyncRegionalTieredCacheResourceWithStreamingResponse:
return AsyncRegionalTieredCacheResourceWithStreamingResponse(self._cache.regional_tiered_cache)
+
+ @cached_property
+ def origin_cloud_regions(self) -> AsyncOriginCloudRegionsResourceWithStreamingResponse:
+ return AsyncOriginCloudRegionsResourceWithStreamingResponse(self._cache.origin_cloud_regions)
diff --git a/src/cloudflare/resources/cache/origin_cloud_regions.py b/src/cloudflare/resources/cache/origin_cloud_regions.py
new file mode 100644
index 00000000000..ba6886aa5c8
--- /dev/null
+++ b/src/cloudflare/resources/cache/origin_cloud_regions.py
@@ -0,0 +1,1044 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Type, Iterable, Optional, cast
+from typing_extensions import Literal
+
+import httpx
+
+from ..._types import Body, Query, Headers, NotGiven, not_given
+from ..._utils import path_template, 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 ..._wrappers import ResultWrapper
+from ...types.cache import (
+ origin_cloud_region_edit_params,
+ origin_cloud_region_create_params,
+ origin_cloud_region_bulk_edit_params,
+)
+from ..._base_client import make_request_options
+from ...types.cache.origin_cloud_region_get_response import OriginCloudRegionGetResponse
+from ...types.cache.origin_cloud_region_edit_response import OriginCloudRegionEditResponse
+from ...types.cache.origin_cloud_region_list_response import OriginCloudRegionListResponse
+from ...types.cache.origin_cloud_region_create_response import OriginCloudRegionCreateResponse
+from ...types.cache.origin_cloud_region_delete_response import OriginCloudRegionDeleteResponse
+from ...types.cache.origin_cloud_region_bulk_edit_response import OriginCloudRegionBulkEditResponse
+from ...types.cache.origin_cloud_region_bulk_delete_response import OriginCloudRegionBulkDeleteResponse
+from ...types.cache.origin_cloud_region_supported_regions_response import OriginCloudRegionSupportedRegionsResponse
+
+__all__ = ["OriginCloudRegionsResource", "AsyncOriginCloudRegionsResource"]
+
+
+class OriginCloudRegionsResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> OriginCloudRegionsResourceWithRawResponse:
+ """
+ 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
+ """
+ return OriginCloudRegionsResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> OriginCloudRegionsResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
+ """
+ return OriginCloudRegionsResourceWithStreamingResponse(self)
+
+ def create(
+ self,
+ *,
+ zone_id: str | None = None,
+ ip: str,
+ region: str,
+ vendor: Literal["aws", "azure", "gcp", "oci"],
+ # 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,
+ ) -> Optional[OriginCloudRegionCreateResponse]:
+ """Adds a single IP-to-cloud-region mapping for the zone.
+
+ The IP must be a valid
+ IPv4 or IPv6 address and is normalized to canonical form before storage (RFC
+ 5952 for IPv6). Returns 400 (code 1145) if a mapping for that IP already exists
+ — use PATCH to update an existing entry. The vendor and region are validated
+ against the list from
+ `GET /zones/{zone_id}/cache/origin_cloud_regions/supported_regions`.
+
+ Args:
+ zone_id: Identifier.
+
+ ip: Origin IP address (IPv4 or IPv6). Normalized to canonical form before storage
+ (RFC 5952 for IPv6).
+
+ region: Cloud vendor region identifier. Must be a valid region for the specified vendor
+ as returned by the supported_regions endpoint.
+
+ vendor: Cloud vendor hosting the origin. Must be one of the supported vendors.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._post(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ body=maybe_transform(
+ {
+ "ip": ip,
+ "region": region,
+ "vendor": vendor,
+ },
+ origin_cloud_region_create_params.OriginCloudRegionCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionCreateResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionCreateResponse]], ResultWrapper[OriginCloudRegionCreateResponse]
+ ),
+ )
+
+ def list(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionListResponse]:
+ """Returns all IP-to-cloud-region mappings configured for the zone.
+
+ Each mapping
+ tells Cloudflare which cloud vendor and region hosts the origin at that IP,
+ enabling the edge to route via the nearest Tiered Cache upper-tier co-located
+ with that cloud provider. Returns an empty array when no mappings exist.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._get(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionListResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionListResponse]], ResultWrapper[OriginCloudRegionListResponse]),
+ )
+
+ def delete(
+ self,
+ origin_ip: str,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionDeleteResponse]:
+ """Removes the cloud region mapping for a single origin IP address.
+
+ The IP path
+ parameter is normalized before lookup. Returns the deleted entry on success.
+ Returns 404 (code 1163) if no mapping exists for the specified IP. When the last
+ mapping for the zone is removed the underlying rule record is also deleted.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ if not origin_ip:
+ raise ValueError(f"Expected a non-empty value for `origin_ip` but received {origin_ip!r}")
+ return self._delete(
+ path_template(
+ "/zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}", zone_id=zone_id, origin_ip=origin_ip
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionDeleteResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionDeleteResponse]], ResultWrapper[OriginCloudRegionDeleteResponse]
+ ),
+ )
+
+ def bulk_delete(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionBulkDeleteResponse]:
+ """Removes up to 100 IP-to-cloud-region mappings in a single request.
+
+ Each IP is
+ validated independently — successfully deleted items are returned in the
+ `succeeded` array and IPs that could not be found or are invalid are returned in
+ the `failed` array.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._delete(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/batch", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionBulkDeleteResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionBulkDeleteResponse]], ResultWrapper[OriginCloudRegionBulkDeleteResponse]
+ ),
+ )
+
+ def bulk_edit(
+ self,
+ *,
+ zone_id: str | None = None,
+ body: Iterable[origin_cloud_region_bulk_edit_params.Body],
+ # 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,
+ ) -> Optional[OriginCloudRegionBulkEditResponse]:
+ """Adds or updates up to 100 IP-to-cloud-region mappings in a single request.
+
+ Each
+ item is validated independently — valid items are applied and invalid items are
+ returned in the `failed` array. The vendor and region for every item are
+ validated against the list from
+ `GET /zones/{zone_id}/cache/origin_cloud_regions/supported_regions`.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._patch(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/batch", zone_id=zone_id),
+ body=maybe_transform(body, Iterable[origin_cloud_region_bulk_edit_params.Body]),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionBulkEditResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionBulkEditResponse]], ResultWrapper[OriginCloudRegionBulkEditResponse]
+ ),
+ )
+
+ def edit(
+ self,
+ *,
+ zone_id: str | None = None,
+ ip: str,
+ region: str,
+ vendor: Literal["aws", "azure", "gcp", "oci"],
+ # 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,
+ ) -> Optional[OriginCloudRegionEditResponse]:
+ """Adds or updates a single IP-to-cloud-region mapping for the zone.
+
+ Unlike POST,
+ this operation is idempotent — if a mapping for the IP already exists it is
+ overwritten. Returns the complete updated list of all mappings for the zone.
+ Returns 403 (code 1164) when the zone has reached the limit of 3,500 IP
+ mappings.
+
+ Args:
+ zone_id: Identifier.
+
+ ip: Origin IP address (IPv4 or IPv6). Normalized to canonical form before storage
+ (RFC 5952 for IPv6).
+
+ region: Cloud vendor region identifier. Must be a valid region for the specified vendor
+ as returned by the supported_regions endpoint.
+
+ vendor: Cloud vendor hosting the origin. Must be one of the supported vendors.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._patch(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ body=maybe_transform(
+ {
+ "ip": ip,
+ "region": region,
+ "vendor": vendor,
+ },
+ origin_cloud_region_edit_params.OriginCloudRegionEditParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionEditResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionEditResponse]], ResultWrapper[OriginCloudRegionEditResponse]),
+ )
+
+ def get(
+ self,
+ origin_ip: str,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionGetResponse]:
+ """Returns the cloud region mapping for a single origin IP address.
+
+ The IP path
+ parameter is normalized before lookup (RFC 5952 for IPv6). Returns 404
+ (code 1142) if the zone has no mappings or if the specified IP has no mapping.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ if not origin_ip:
+ raise ValueError(f"Expected a non-empty value for `origin_ip` but received {origin_ip!r}")
+ return self._get(
+ path_template(
+ "/zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}", zone_id=zone_id, origin_ip=origin_ip
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionGetResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionGetResponse]], ResultWrapper[OriginCloudRegionGetResponse]),
+ )
+
+ def supported_regions(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionSupportedRegionsResponse]:
+ """
+ Returns the cloud vendors and regions that are valid values for origin cloud
+ region mappings. Each region includes the Tiered Cache upper-tier colocation
+ codes that will be used for cache routing when a mapping targeting that region
+ is active. Requires the zone to have Tiered Cache enabled.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return self._get(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/supported_regions", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionSupportedRegionsResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionSupportedRegionsResponse]],
+ ResultWrapper[OriginCloudRegionSupportedRegionsResponse],
+ ),
+ )
+
+
+class AsyncOriginCloudRegionsResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncOriginCloudRegionsResourceWithRawResponse:
+ """
+ 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncOriginCloudRegionsResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncOriginCloudRegionsResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
+ """
+ return AsyncOriginCloudRegionsResourceWithStreamingResponse(self)
+
+ async def create(
+ self,
+ *,
+ zone_id: str | None = None,
+ ip: str,
+ region: str,
+ vendor: Literal["aws", "azure", "gcp", "oci"],
+ # 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,
+ ) -> Optional[OriginCloudRegionCreateResponse]:
+ """Adds a single IP-to-cloud-region mapping for the zone.
+
+ The IP must be a valid
+ IPv4 or IPv6 address and is normalized to canonical form before storage (RFC
+ 5952 for IPv6). Returns 400 (code 1145) if a mapping for that IP already exists
+ — use PATCH to update an existing entry. The vendor and region are validated
+ against the list from
+ `GET /zones/{zone_id}/cache/origin_cloud_regions/supported_regions`.
+
+ Args:
+ zone_id: Identifier.
+
+ ip: Origin IP address (IPv4 or IPv6). Normalized to canonical form before storage
+ (RFC 5952 for IPv6).
+
+ region: Cloud vendor region identifier. Must be a valid region for the specified vendor
+ as returned by the supported_regions endpoint.
+
+ vendor: Cloud vendor hosting the origin. Must be one of the supported vendors.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._post(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ body=await async_maybe_transform(
+ {
+ "ip": ip,
+ "region": region,
+ "vendor": vendor,
+ },
+ origin_cloud_region_create_params.OriginCloudRegionCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionCreateResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionCreateResponse]], ResultWrapper[OriginCloudRegionCreateResponse]
+ ),
+ )
+
+ async def list(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionListResponse]:
+ """Returns all IP-to-cloud-region mappings configured for the zone.
+
+ Each mapping
+ tells Cloudflare which cloud vendor and region hosts the origin at that IP,
+ enabling the edge to route via the nearest Tiered Cache upper-tier co-located
+ with that cloud provider. Returns an empty array when no mappings exist.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._get(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionListResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionListResponse]], ResultWrapper[OriginCloudRegionListResponse]),
+ )
+
+ async def delete(
+ self,
+ origin_ip: str,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionDeleteResponse]:
+ """Removes the cloud region mapping for a single origin IP address.
+
+ The IP path
+ parameter is normalized before lookup. Returns the deleted entry on success.
+ Returns 404 (code 1163) if no mapping exists for the specified IP. When the last
+ mapping for the zone is removed the underlying rule record is also deleted.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ if not origin_ip:
+ raise ValueError(f"Expected a non-empty value for `origin_ip` but received {origin_ip!r}")
+ return await self._delete(
+ path_template(
+ "/zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}", zone_id=zone_id, origin_ip=origin_ip
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionDeleteResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionDeleteResponse]], ResultWrapper[OriginCloudRegionDeleteResponse]
+ ),
+ )
+
+ async def bulk_delete(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionBulkDeleteResponse]:
+ """Removes up to 100 IP-to-cloud-region mappings in a single request.
+
+ Each IP is
+ validated independently — successfully deleted items are returned in the
+ `succeeded` array and IPs that could not be found or are invalid are returned in
+ the `failed` array.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._delete(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/batch", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionBulkDeleteResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionBulkDeleteResponse]], ResultWrapper[OriginCloudRegionBulkDeleteResponse]
+ ),
+ )
+
+ async def bulk_edit(
+ self,
+ *,
+ zone_id: str | None = None,
+ body: Iterable[origin_cloud_region_bulk_edit_params.Body],
+ # 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,
+ ) -> Optional[OriginCloudRegionBulkEditResponse]:
+ """Adds or updates up to 100 IP-to-cloud-region mappings in a single request.
+
+ Each
+ item is validated independently — valid items are applied and invalid items are
+ returned in the `failed` array. The vendor and region for every item are
+ validated against the list from
+ `GET /zones/{zone_id}/cache/origin_cloud_regions/supported_regions`.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._patch(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/batch", zone_id=zone_id),
+ body=await async_maybe_transform(body, Iterable[origin_cloud_region_bulk_edit_params.Body]),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionBulkEditResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionBulkEditResponse]], ResultWrapper[OriginCloudRegionBulkEditResponse]
+ ),
+ )
+
+ async def edit(
+ self,
+ *,
+ zone_id: str | None = None,
+ ip: str,
+ region: str,
+ vendor: Literal["aws", "azure", "gcp", "oci"],
+ # 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,
+ ) -> Optional[OriginCloudRegionEditResponse]:
+ """Adds or updates a single IP-to-cloud-region mapping for the zone.
+
+ Unlike POST,
+ this operation is idempotent — if a mapping for the IP already exists it is
+ overwritten. Returns the complete updated list of all mappings for the zone.
+ Returns 403 (code 1164) when the zone has reached the limit of 3,500 IP
+ mappings.
+
+ Args:
+ zone_id: Identifier.
+
+ ip: Origin IP address (IPv4 or IPv6). Normalized to canonical form before storage
+ (RFC 5952 for IPv6).
+
+ region: Cloud vendor region identifier. Must be a valid region for the specified vendor
+ as returned by the supported_regions endpoint.
+
+ vendor: Cloud vendor hosting the origin. Must be one of the supported vendors.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._patch(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions", zone_id=zone_id),
+ body=await async_maybe_transform(
+ {
+ "ip": ip,
+ "region": region,
+ "vendor": vendor,
+ },
+ origin_cloud_region_edit_params.OriginCloudRegionEditParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionEditResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionEditResponse]], ResultWrapper[OriginCloudRegionEditResponse]),
+ )
+
+ async def get(
+ self,
+ origin_ip: str,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionGetResponse]:
+ """Returns the cloud region mapping for a single origin IP address.
+
+ The IP path
+ parameter is normalized before lookup (RFC 5952 for IPv6). Returns 404
+ (code 1142) if the zone has no mappings or if the specified IP has no mapping.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ if not origin_ip:
+ raise ValueError(f"Expected a non-empty value for `origin_ip` but received {origin_ip!r}")
+ return await self._get(
+ path_template(
+ "/zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}", zone_id=zone_id, origin_ip=origin_ip
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionGetResponse]]._unwrapper,
+ ),
+ cast_to=cast(Type[Optional[OriginCloudRegionGetResponse]], ResultWrapper[OriginCloudRegionGetResponse]),
+ )
+
+ async def supported_regions(
+ self,
+ *,
+ zone_id: str | None = None,
+ # 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,
+ ) -> Optional[OriginCloudRegionSupportedRegionsResponse]:
+ """
+ Returns the cloud vendors and regions that are valid values for origin cloud
+ region mappings. Each region includes the Tiered Cache upper-tier colocation
+ codes that will be used for cache routing when a mapping targeting that region
+ is active. Requires the zone to have Tiered Cache enabled.
+
+ Args:
+ zone_id: Identifier.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if zone_id is None:
+ zone_id = self._client._get_zone_id_path_param()
+ if not zone_id:
+ raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
+ return await self._get(
+ path_template("/zones/{zone_id}/cache/origin_cloud_regions/supported_regions", zone_id=zone_id),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ post_parser=ResultWrapper[Optional[OriginCloudRegionSupportedRegionsResponse]]._unwrapper,
+ ),
+ cast_to=cast(
+ Type[Optional[OriginCloudRegionSupportedRegionsResponse]],
+ ResultWrapper[OriginCloudRegionSupportedRegionsResponse],
+ ),
+ )
+
+
+class OriginCloudRegionsResourceWithRawResponse:
+ def __init__(self, origin_cloud_regions: OriginCloudRegionsResource) -> None:
+ self._origin_cloud_regions = origin_cloud_regions
+
+ self.create = to_raw_response_wrapper(
+ origin_cloud_regions.create,
+ )
+ self.list = to_raw_response_wrapper(
+ origin_cloud_regions.list,
+ )
+ self.delete = to_raw_response_wrapper(
+ origin_cloud_regions.delete,
+ )
+ self.bulk_delete = to_raw_response_wrapper(
+ origin_cloud_regions.bulk_delete,
+ )
+ self.bulk_edit = to_raw_response_wrapper(
+ origin_cloud_regions.bulk_edit,
+ )
+ self.edit = to_raw_response_wrapper(
+ origin_cloud_regions.edit,
+ )
+ self.get = to_raw_response_wrapper(
+ origin_cloud_regions.get,
+ )
+ self.supported_regions = to_raw_response_wrapper(
+ origin_cloud_regions.supported_regions,
+ )
+
+
+class AsyncOriginCloudRegionsResourceWithRawResponse:
+ def __init__(self, origin_cloud_regions: AsyncOriginCloudRegionsResource) -> None:
+ self._origin_cloud_regions = origin_cloud_regions
+
+ self.create = async_to_raw_response_wrapper(
+ origin_cloud_regions.create,
+ )
+ self.list = async_to_raw_response_wrapper(
+ origin_cloud_regions.list,
+ )
+ self.delete = async_to_raw_response_wrapper(
+ origin_cloud_regions.delete,
+ )
+ self.bulk_delete = async_to_raw_response_wrapper(
+ origin_cloud_regions.bulk_delete,
+ )
+ self.bulk_edit = async_to_raw_response_wrapper(
+ origin_cloud_regions.bulk_edit,
+ )
+ self.edit = async_to_raw_response_wrapper(
+ origin_cloud_regions.edit,
+ )
+ self.get = async_to_raw_response_wrapper(
+ origin_cloud_regions.get,
+ )
+ self.supported_regions = async_to_raw_response_wrapper(
+ origin_cloud_regions.supported_regions,
+ )
+
+
+class OriginCloudRegionsResourceWithStreamingResponse:
+ def __init__(self, origin_cloud_regions: OriginCloudRegionsResource) -> None:
+ self._origin_cloud_regions = origin_cloud_regions
+
+ self.create = to_streamed_response_wrapper(
+ origin_cloud_regions.create,
+ )
+ self.list = to_streamed_response_wrapper(
+ origin_cloud_regions.list,
+ )
+ self.delete = to_streamed_response_wrapper(
+ origin_cloud_regions.delete,
+ )
+ self.bulk_delete = to_streamed_response_wrapper(
+ origin_cloud_regions.bulk_delete,
+ )
+ self.bulk_edit = to_streamed_response_wrapper(
+ origin_cloud_regions.bulk_edit,
+ )
+ self.edit = to_streamed_response_wrapper(
+ origin_cloud_regions.edit,
+ )
+ self.get = to_streamed_response_wrapper(
+ origin_cloud_regions.get,
+ )
+ self.supported_regions = to_streamed_response_wrapper(
+ origin_cloud_regions.supported_regions,
+ )
+
+
+class AsyncOriginCloudRegionsResourceWithStreamingResponse:
+ def __init__(self, origin_cloud_regions: AsyncOriginCloudRegionsResource) -> None:
+ self._origin_cloud_regions = origin_cloud_regions
+
+ self.create = async_to_streamed_response_wrapper(
+ origin_cloud_regions.create,
+ )
+ self.list = async_to_streamed_response_wrapper(
+ origin_cloud_regions.list,
+ )
+ self.delete = async_to_streamed_response_wrapper(
+ origin_cloud_regions.delete,
+ )
+ self.bulk_delete = async_to_streamed_response_wrapper(
+ origin_cloud_regions.bulk_delete,
+ )
+ self.bulk_edit = async_to_streamed_response_wrapper(
+ origin_cloud_regions.bulk_edit,
+ )
+ self.edit = async_to_streamed_response_wrapper(
+ origin_cloud_regions.edit,
+ )
+ self.get = async_to_streamed_response_wrapper(
+ origin_cloud_regions.get,
+ )
+ self.supported_regions = async_to_streamed_response_wrapper(
+ origin_cloud_regions.supported_regions,
+ )
diff --git a/src/cloudflare/resources/client_certificates.py b/src/cloudflare/resources/client_certificates.py
deleted file mode 100644
index 3a347848901..00000000000
--- a/src/cloudflare/resources/client_certificates.py
+++ /dev/null
@@ -1,678 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-from typing_extensions import Literal
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.client_certificates import (
- client_certificate_edit_params,
- client_certificate_list_params,
- client_certificate_create_params,
-)
-from ..types.client_certificates.client_certificate import ClientCertificate
-
-__all__ = ["ClientCertificatesResource", "AsyncClientCertificatesResource"]
-
-
-class ClientCertificatesResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ClientCertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return ClientCertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ClientCertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return ClientCertificatesResourceWithStreamingResponse(self)
-
- def create(
- self,
- *,
- zone_id: str,
- csr: str,
- validity_days: int,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Create a new API Shield mTLS Client Certificate
-
- Args:
- zone_id: Identifier.
-
- csr: The Certificate Signing Request (CSR). Must be newline-encoded.
-
- validity_days: The number of days the Client Certificate will be valid after the issued_on date
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._post(
- f"/zones/{zone_id}/client_certificates",
- body=maybe_transform(
- {
- "csr": csr,
- "validity_days": validity_days,
- },
- client_certificate_create_params.ClientCertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- limit: int | Omit = omit,
- offset: int | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- status: Literal["all", "active", "pending_reactivation", "pending_revocation", "revoked"] | 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,
- ) -> SyncV4PagePaginationArray[ClientCertificate]:
- """
- List all of your Zone's API Shield mTLS Client Certificates by Status and/or
- using Pagination
-
- Args:
- zone_id: Identifier.
-
- limit: Limit to the number of records returned.
-
- offset: Offset the results
-
- page: Page number of paginated results.
-
- per_page: Number of records per page.
-
- status: Client Certitifcate Status to filter results by.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/client_certificates",
- page=SyncV4PagePaginationArray[ClientCertificate],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "limit": limit,
- "offset": offset,
- "page": page,
- "per_page": per_page,
- "status": status,
- },
- client_certificate_list_params.ClientCertificateListParams,
- ),
- ),
- model=ClientCertificate,
- )
-
- def delete(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Set a API Shield mTLS Client Certificate to pending_revocation status for
- processing to revoked status.
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return self._delete(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- def edit(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- reactivate: bool | 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,
- ) -> Optional[ClientCertificate]:
- """
- If a API Shield mTLS Client Certificate is in a pending_revocation state, you
- may reactivate it with this endpoint.
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return self._patch(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- body=maybe_transform(
- {"reactivate": reactivate}, client_certificate_edit_params.ClientCertificateEditParams
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- def get(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Get Details for a single mTLS API Shield Client Certificate
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return self._get(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
-
-class AsyncClientCertificatesResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncClientCertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncClientCertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncClientCertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncClientCertificatesResourceWithStreamingResponse(self)
-
- async def create(
- self,
- *,
- zone_id: str,
- csr: str,
- validity_days: int,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Create a new API Shield mTLS Client Certificate
-
- Args:
- zone_id: Identifier.
-
- csr: The Certificate Signing Request (CSR). Must be newline-encoded.
-
- validity_days: The number of days the Client Certificate will be valid after the issued_on date
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._post(
- f"/zones/{zone_id}/client_certificates",
- body=await async_maybe_transform(
- {
- "csr": csr,
- "validity_days": validity_days,
- },
- client_certificate_create_params.ClientCertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- limit: int | Omit = omit,
- offset: int | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- status: Literal["all", "active", "pending_reactivation", "pending_revocation", "revoked"] | 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,
- ) -> AsyncPaginator[ClientCertificate, AsyncV4PagePaginationArray[ClientCertificate]]:
- """
- List all of your Zone's API Shield mTLS Client Certificates by Status and/or
- using Pagination
-
- Args:
- zone_id: Identifier.
-
- limit: Limit to the number of records returned.
-
- offset: Offset the results
-
- page: Page number of paginated results.
-
- per_page: Number of records per page.
-
- status: Client Certitifcate Status to filter results by.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/client_certificates",
- page=AsyncV4PagePaginationArray[ClientCertificate],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "limit": limit,
- "offset": offset,
- "page": page,
- "per_page": per_page,
- "status": status,
- },
- client_certificate_list_params.ClientCertificateListParams,
- ),
- ),
- model=ClientCertificate,
- )
-
- async def delete(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Set a API Shield mTLS Client Certificate to pending_revocation status for
- processing to revoked status.
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return await self._delete(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- async def edit(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- reactivate: bool | 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,
- ) -> Optional[ClientCertificate]:
- """
- If a API Shield mTLS Client Certificate is in a pending_revocation state, you
- may reactivate it with this endpoint.
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return await self._patch(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- body=await async_maybe_transform(
- {"reactivate": reactivate}, client_certificate_edit_params.ClientCertificateEditParams
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
- async def get(
- self,
- client_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[ClientCertificate]:
- """
- Get Details for a single mTLS API Shield Client Certificate
-
- Args:
- zone_id: Identifier.
-
- client_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not client_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `client_certificate_id` but received {client_certificate_id!r}"
- )
- return await self._get(
- f"/zones/{zone_id}/client_certificates/{client_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[ClientCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[ClientCertificate]], ResultWrapper[ClientCertificate]),
- )
-
-
-class ClientCertificatesResourceWithRawResponse:
- def __init__(self, client_certificates: ClientCertificatesResource) -> None:
- self._client_certificates = client_certificates
-
- self.create = to_raw_response_wrapper(
- client_certificates.create,
- )
- self.list = to_raw_response_wrapper(
- client_certificates.list,
- )
- self.delete = to_raw_response_wrapper(
- client_certificates.delete,
- )
- self.edit = to_raw_response_wrapper(
- client_certificates.edit,
- )
- self.get = to_raw_response_wrapper(
- client_certificates.get,
- )
-
-
-class AsyncClientCertificatesResourceWithRawResponse:
- def __init__(self, client_certificates: AsyncClientCertificatesResource) -> None:
- self._client_certificates = client_certificates
-
- self.create = async_to_raw_response_wrapper(
- client_certificates.create,
- )
- self.list = async_to_raw_response_wrapper(
- client_certificates.list,
- )
- self.delete = async_to_raw_response_wrapper(
- client_certificates.delete,
- )
- self.edit = async_to_raw_response_wrapper(
- client_certificates.edit,
- )
- self.get = async_to_raw_response_wrapper(
- client_certificates.get,
- )
-
-
-class ClientCertificatesResourceWithStreamingResponse:
- def __init__(self, client_certificates: ClientCertificatesResource) -> None:
- self._client_certificates = client_certificates
-
- self.create = to_streamed_response_wrapper(
- client_certificates.create,
- )
- self.list = to_streamed_response_wrapper(
- client_certificates.list,
- )
- self.delete = to_streamed_response_wrapper(
- client_certificates.delete,
- )
- self.edit = to_streamed_response_wrapper(
- client_certificates.edit,
- )
- self.get = to_streamed_response_wrapper(
- client_certificates.get,
- )
-
-
-class AsyncClientCertificatesResourceWithStreamingResponse:
- def __init__(self, client_certificates: AsyncClientCertificatesResource) -> None:
- self._client_certificates = client_certificates
-
- self.create = async_to_streamed_response_wrapper(
- client_certificates.create,
- )
- self.list = async_to_streamed_response_wrapper(
- client_certificates.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- client_certificates.delete,
- )
- self.edit = async_to_streamed_response_wrapper(
- client_certificates.edit,
- )
- self.get = async_to_streamed_response_wrapper(
- client_certificates.get,
- )
diff --git a/src/cloudflare/resources/cloudforce_one/threat_events/threat_events.py b/src/cloudflare/resources/cloudforce_one/threat_events/threat_events.py
index 2bf7fa22434..b95f6db0e71 100644
--- a/src/cloudflare/resources/cloudforce_one/threat_events/threat_events.py
+++ b/src/cloudflare/resources/cloudforce_one/threat_events/threat_events.py
@@ -276,11 +276,11 @@ def list(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> ThreatEventListResponse:
"""
- When `datasetId` is unspecified, events will be listed from the
- `Cloudforce One Threat Events` dataset. To list existing datasets (and their
- IDs), use the
+ Use `datasetId=all` or `datasetId=*` to query all event datasets for the account
+ (limited to 10). When `datasetId` is unspecified, events are listed from the
+ default Cloudforce One Threat Events dataset. To list existing datasets, use the
[`List Datasets`](https://developers.cloudflare.com/api/resources/cloudforce_one/subresources/threat_events/subresources/datasets/methods/list/)
- endpoint). Also, must provide query parameters.
+ endpoint.
Args:
account_id: Account ID.
@@ -290,6 +290,10 @@ def list(
result_info.cursor field. Use cursor-based pagination for deep pagination
(beyond 100,000 records) or for optimal performance.
+ dataset_id: Dataset IDs to query events from (array of UUIDs), or special value 'all' or
+ '\\**' to query all event datasets for the account. If not provided, uses the
+ default dataset.
+
page: Page number (1-indexed) for offset-based pagination. Limited to offset of
100,000 records. For deep pagination, use cursor-based pagination instead.
@@ -675,11 +679,11 @@ async def list(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> ThreatEventListResponse:
"""
- When `datasetId` is unspecified, events will be listed from the
- `Cloudforce One Threat Events` dataset. To list existing datasets (and their
- IDs), use the
+ Use `datasetId=all` or `datasetId=*` to query all event datasets for the account
+ (limited to 10). When `datasetId` is unspecified, events are listed from the
+ default Cloudforce One Threat Events dataset. To list existing datasets, use the
[`List Datasets`](https://developers.cloudflare.com/api/resources/cloudforce_one/subresources/threat_events/subresources/datasets/methods/list/)
- endpoint). Also, must provide query parameters.
+ endpoint.
Args:
account_id: Account ID.
@@ -689,6 +693,10 @@ async def list(
result_info.cursor field. Use cursor-based pagination for deep pagination
(beyond 100,000 records) or for optimal performance.
+ dataset_id: Dataset IDs to query events from (array of UUIDs), or special value 'all' or
+ '\\**' to query all event datasets for the account. If not provided, uses the
+ default dataset.
+
page: Page number (1-indexed) for offset-based pagination. Limited to offset of
100,000 records. For deep pagination, use cursor-based pagination instead.
diff --git a/src/cloudflare/resources/custom_nameservers.py b/src/cloudflare/resources/custom_nameservers.py
deleted file mode 100644
index 6545ebd198c..00000000000
--- a/src/cloudflare/resources/custom_nameservers.py
+++ /dev/null
@@ -1,388 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..pagination import SyncSinglePage, AsyncSinglePage
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.custom_nameservers import custom_nameserver_create_params
-from ..types.custom_nameservers.custom_nameserver import CustomNameserver
-from ..types.custom_nameservers.custom_nameserver_delete_response import CustomNameserverDeleteResponse
-
-__all__ = ["CustomNameserversResource", "AsyncCustomNameserversResource"]
-
-
-class CustomNameserversResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> CustomNameserversResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return CustomNameserversResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> CustomNameserversResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return CustomNameserversResourceWithStreamingResponse(self)
-
- def create(
- self,
- *,
- account_id: str,
- ns_name: str,
- ns_set: float | 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,
- ) -> Optional[CustomNameserver]:
- """
- Add Account Custom Nameserver
-
- Args:
- account_id: Account identifier tag.
-
- ns_name: The FQDN of the name server.
-
- ns_set: The number of the set that this name server belongs to.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return self._post(
- f"/accounts/{account_id}/custom_ns",
- body=maybe_transform(
- {
- "ns_name": ns_name,
- "ns_set": ns_set,
- },
- custom_nameserver_create_params.CustomNameserverCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[CustomNameserver]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[CustomNameserver]], ResultWrapper[CustomNameserver]),
- )
-
- def delete(
- self,
- custom_ns_id: str,
- *,
- account_id: str,
- # 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,
- ) -> SyncSinglePage[CustomNameserverDeleteResponse]:
- """
- Delete Account Custom Nameserver
-
- Args:
- account_id: Account identifier tag.
-
- custom_ns_id: The FQDN of the name server.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- if not custom_ns_id:
- raise ValueError(f"Expected a non-empty value for `custom_ns_id` but received {custom_ns_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/custom_ns/{custom_ns_id}",
- page=SyncSinglePage[CustomNameserverDeleteResponse],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=str,
- method="delete",
- )
-
- def get(
- self,
- *,
- account_id: str,
- # 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,
- ) -> SyncSinglePage[CustomNameserver]:
- """
- List an account's custom nameservers.
-
- Args:
- account_id: Account identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/custom_ns",
- page=SyncSinglePage[CustomNameserver],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=CustomNameserver,
- )
-
-
-class AsyncCustomNameserversResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncCustomNameserversResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncCustomNameserversResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncCustomNameserversResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncCustomNameserversResourceWithStreamingResponse(self)
-
- async def create(
- self,
- *,
- account_id: str,
- ns_name: str,
- ns_set: float | 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,
- ) -> Optional[CustomNameserver]:
- """
- Add Account Custom Nameserver
-
- Args:
- account_id: Account identifier tag.
-
- ns_name: The FQDN of the name server.
-
- ns_set: The number of the set that this name server belongs to.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return await self._post(
- f"/accounts/{account_id}/custom_ns",
- body=await async_maybe_transform(
- {
- "ns_name": ns_name,
- "ns_set": ns_set,
- },
- custom_nameserver_create_params.CustomNameserverCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[CustomNameserver]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[CustomNameserver]], ResultWrapper[CustomNameserver]),
- )
-
- def delete(
- self,
- custom_ns_id: str,
- *,
- account_id: str,
- # 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,
- ) -> AsyncPaginator[CustomNameserverDeleteResponse, AsyncSinglePage[CustomNameserverDeleteResponse]]:
- """
- Delete Account Custom Nameserver
-
- Args:
- account_id: Account identifier tag.
-
- custom_ns_id: The FQDN of the name server.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- if not custom_ns_id:
- raise ValueError(f"Expected a non-empty value for `custom_ns_id` but received {custom_ns_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/custom_ns/{custom_ns_id}",
- page=AsyncSinglePage[CustomNameserverDeleteResponse],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=str,
- method="delete",
- )
-
- def get(
- self,
- *,
- account_id: str,
- # 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,
- ) -> AsyncPaginator[CustomNameserver, AsyncSinglePage[CustomNameserver]]:
- """
- List an account's custom nameservers.
-
- Args:
- account_id: Account identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not account_id:
- raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
- return self._get_api_list(
- f"/accounts/{account_id}/custom_ns",
- page=AsyncSinglePage[CustomNameserver],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=CustomNameserver,
- )
-
-
-class CustomNameserversResourceWithRawResponse:
- def __init__(self, custom_nameservers: CustomNameserversResource) -> None:
- self._custom_nameservers = custom_nameservers
-
- self.create = to_raw_response_wrapper(
- custom_nameservers.create,
- )
- self.delete = to_raw_response_wrapper(
- custom_nameservers.delete,
- )
- self.get = to_raw_response_wrapper(
- custom_nameservers.get,
- )
-
-
-class AsyncCustomNameserversResourceWithRawResponse:
- def __init__(self, custom_nameservers: AsyncCustomNameserversResource) -> None:
- self._custom_nameservers = custom_nameservers
-
- self.create = async_to_raw_response_wrapper(
- custom_nameservers.create,
- )
- self.delete = async_to_raw_response_wrapper(
- custom_nameservers.delete,
- )
- self.get = async_to_raw_response_wrapper(
- custom_nameservers.get,
- )
-
-
-class CustomNameserversResourceWithStreamingResponse:
- def __init__(self, custom_nameservers: CustomNameserversResource) -> None:
- self._custom_nameservers = custom_nameservers
-
- self.create = to_streamed_response_wrapper(
- custom_nameservers.create,
- )
- self.delete = to_streamed_response_wrapper(
- custom_nameservers.delete,
- )
- self.get = to_streamed_response_wrapper(
- custom_nameservers.get,
- )
-
-
-class AsyncCustomNameserversResourceWithStreamingResponse:
- def __init__(self, custom_nameservers: AsyncCustomNameserversResource) -> None:
- self._custom_nameservers = custom_nameservers
-
- self.create = async_to_streamed_response_wrapper(
- custom_nameservers.create,
- )
- self.delete = async_to_streamed_response_wrapper(
- custom_nameservers.delete,
- )
- self.get = async_to_streamed_response_wrapper(
- custom_nameservers.get,
- )
diff --git a/src/cloudflare/resources/dcv_delegation.py b/src/cloudflare/resources/dcv_delegation.py
deleted file mode 100644
index f421bf26ac2..00000000000
--- a/src/cloudflare/resources/dcv_delegation.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-
-import httpx
-
-from .._types import Body, Query, Headers, NotGiven, not_given
-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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.dcv_delegation.dcv_delegation_uuid import DCVDelegationUUID
-
-__all__ = ["DCVDelegationResource", "AsyncDCVDelegationResource"]
-
-
-class DCVDelegationResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> DCVDelegationResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return DCVDelegationResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> DCVDelegationResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return DCVDelegationResourceWithStreamingResponse(self)
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[DCVDelegationUUID]:
- """
- Retrieve the account and zone specific unique identifier used as part of the
- CNAME target for DCV Delegation.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/dcv_delegation/uuid",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[DCVDelegationUUID]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[DCVDelegationUUID]], ResultWrapper[DCVDelegationUUID]),
- )
-
-
-class AsyncDCVDelegationResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncDCVDelegationResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncDCVDelegationResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncDCVDelegationResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncDCVDelegationResourceWithStreamingResponse(self)
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[DCVDelegationUUID]:
- """
- Retrieve the account and zone specific unique identifier used as part of the
- CNAME target for DCV Delegation.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/dcv_delegation/uuid",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[DCVDelegationUUID]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[DCVDelegationUUID]], ResultWrapper[DCVDelegationUUID]),
- )
-
-
-class DCVDelegationResourceWithRawResponse:
- def __init__(self, dcv_delegation: DCVDelegationResource) -> None:
- self._dcv_delegation = dcv_delegation
-
- self.get = to_raw_response_wrapper(
- dcv_delegation.get,
- )
-
-
-class AsyncDCVDelegationResourceWithRawResponse:
- def __init__(self, dcv_delegation: AsyncDCVDelegationResource) -> None:
- self._dcv_delegation = dcv_delegation
-
- self.get = async_to_raw_response_wrapper(
- dcv_delegation.get,
- )
-
-
-class DCVDelegationResourceWithStreamingResponse:
- def __init__(self, dcv_delegation: DCVDelegationResource) -> None:
- self._dcv_delegation = dcv_delegation
-
- self.get = to_streamed_response_wrapper(
- dcv_delegation.get,
- )
-
-
-class AsyncDCVDelegationResourceWithStreamingResponse:
- def __init__(self, dcv_delegation: AsyncDCVDelegationResource) -> None:
- self._dcv_delegation = dcv_delegation
-
- self.get = async_to_streamed_response_wrapper(
- dcv_delegation.get,
- )
diff --git a/src/cloudflare/resources/email_security/investigate/investigate.py b/src/cloudflare/resources/email_security/investigate/investigate.py
index f161711f98d..9fd1bee5ed0 100644
--- a/src/cloudflare/resources/email_security/investigate/investigate.py
+++ b/src/cloudflare/resources/email_security/investigate/investigate.py
@@ -188,7 +188,7 @@ def list(
page: Deprecated: Use cursor pagination instead.
- per_page: The number of results per page.
+ per_page: The number of results per page. Maximum value is 1000.
query: The space-delimited term used in the query. The search is case-insensitive.
@@ -436,7 +436,7 @@ def list(
page: Deprecated: Use cursor pagination instead.
- per_page: The number of results per page.
+ per_page: The number of results per page. Maximum value is 1000.
query: The space-delimited term used in the query. The search is case-insensitive.
diff --git a/src/cloudflare/resources/filters.py b/src/cloudflare/resources/filters.py
deleted file mode 100644
index 9ecfd9dc3ab..00000000000
--- a/src/cloudflare/resources/filters.py
+++ /dev/null
@@ -1,976 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import typing_extensions
-from typing import Type, Iterable, Optional, cast
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, 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 .._wrappers import ResultWrapper
-from ..pagination import SyncSinglePage, AsyncSinglePage, SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.filters import (
- filter_list_params,
- filter_update_params,
- filter_bulk_delete_params,
- filter_bulk_update_params,
-)
-from ..types.filters.firewall_filter import FirewallFilter
-from ..types.filters.firewall_filter_param import FirewallFilterParam
-from ..types.filters.filter_delete_response import FilterDeleteResponse
-from ..types.filters.filter_bulk_delete_response import FilterBulkDeleteResponse
-
-__all__ = ["FiltersResource", "AsyncFiltersResource"]
-
-
-class FiltersResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> FiltersResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return FiltersResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> FiltersResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return FiltersResourceWithStreamingResponse(self)
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def create(
- self,
- *,
- zone_id: str,
- body: Iterable[FirewallFilterParam],
- # 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,
- ) -> SyncSinglePage[FirewallFilter]:
- """
- Creates one or more filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=SyncSinglePage[FirewallFilter],
- body=maybe_transform(body, Iterable[FirewallFilterParam]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=FirewallFilter,
- method="post",
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def update(
- self,
- filter_id: str,
- *,
- zone_id: str,
- description: str | Omit = omit,
- expression: str | Omit = omit,
- paused: bool | Omit = omit,
- ref: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> FirewallFilter:
- """
- Updates an existing filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- description: An informative summary of the filter.
-
- expression: The filter expression. For more information, refer to
- [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/).
-
- paused: When true, indicates that the filter is currently paused.
-
- ref: A short reference tag. Allows you to select related filters.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return self._put(
- f"/zones/{zone_id}/filters/{filter_id}",
- body=maybe_transform(
- {
- "description": description,
- "expression": expression,
- "paused": paused,
- "ref": ref,
- },
- filter_update_params.FilterUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FirewallFilter]._unwrapper,
- ),
- cast_to=cast(Type[FirewallFilter], ResultWrapper[FirewallFilter]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def list(
- self,
- *,
- zone_id: str,
- id: str | Omit = omit,
- description: str | Omit = omit,
- expression: str | Omit = omit,
- page: float | Omit = omit,
- paused: bool | Omit = omit,
- per_page: float | Omit = omit,
- ref: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> SyncV4PagePaginationArray[FirewallFilter]:
- """Fetches filters in a zone.
-
- You can filter the results using several optional
- parameters.
-
- Args:
- zone_id: Defines an identifier.
-
- id: The unique identifier of the filter.
-
- description: A case-insensitive string to find in the description.
-
- expression: A case-insensitive string to find in the expression.
-
- page: Page number of paginated results.
-
- paused: When true, indicates that the filter is currently paused.
-
- per_page: Number of filters per page.
-
- ref: The filter ref (a short reference tag) to search for. Must be an exact match.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=SyncV4PagePaginationArray[FirewallFilter],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "id": id,
- "description": description,
- "expression": expression,
- "page": page,
- "paused": paused,
- "per_page": per_page,
- "ref": ref,
- },
- filter_list_params.FilterListParams,
- ),
- ),
- model=FirewallFilter,
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def delete(
- self,
- filter_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> FilterDeleteResponse:
- """
- Deletes an existing filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return self._delete(
- f"/zones/{zone_id}/filters/{filter_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FilterDeleteResponse]._unwrapper,
- ),
- cast_to=cast(Type[FilterDeleteResponse], ResultWrapper[FilterDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def bulk_delete(
- self,
- *,
- zone_id: str,
- id: SequenceNotStr[str],
- # 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,
- ) -> Optional[FilterBulkDeleteResponse]:
- """
- Deletes one or more existing filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._delete(
- f"/zones/{zone_id}/filters",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform({"id": id}, filter_bulk_delete_params.FilterBulkDeleteParams),
- post_parser=ResultWrapper[Optional[FilterBulkDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FilterBulkDeleteResponse]], ResultWrapper[FilterBulkDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def bulk_update(
- self,
- *,
- zone_id: str,
- body: Iterable[filter_bulk_update_params.Body],
- # 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,
- ) -> SyncSinglePage[FirewallFilter]:
- """
- Updates one or more existing filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=SyncSinglePage[FirewallFilter],
- body=maybe_transform(body, Iterable[filter_bulk_update_params.Body]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=FirewallFilter,
- method="put",
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def get(
- self,
- filter_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> FirewallFilter:
- """
- Fetches the details of a filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return self._get(
- f"/zones/{zone_id}/filters/{filter_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FirewallFilter]._unwrapper,
- ),
- cast_to=cast(Type[FirewallFilter], ResultWrapper[FirewallFilter]),
- )
-
-
-class AsyncFiltersResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncFiltersResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncFiltersResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncFiltersResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncFiltersResourceWithStreamingResponse(self)
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def create(
- self,
- *,
- zone_id: str,
- body: Iterable[FirewallFilterParam],
- # 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,
- ) -> AsyncPaginator[FirewallFilter, AsyncSinglePage[FirewallFilter]]:
- """
- Creates one or more filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=AsyncSinglePage[FirewallFilter],
- body=maybe_transform(body, Iterable[FirewallFilterParam]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=FirewallFilter,
- method="post",
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- async def update(
- self,
- filter_id: str,
- *,
- zone_id: str,
- description: str | Omit = omit,
- expression: str | Omit = omit,
- paused: bool | Omit = omit,
- ref: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> FirewallFilter:
- """
- Updates an existing filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- description: An informative summary of the filter.
-
- expression: The filter expression. For more information, refer to
- [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/).
-
- paused: When true, indicates that the filter is currently paused.
-
- ref: A short reference tag. Allows you to select related filters.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return await self._put(
- f"/zones/{zone_id}/filters/{filter_id}",
- body=await async_maybe_transform(
- {
- "description": description,
- "expression": expression,
- "paused": paused,
- "ref": ref,
- },
- filter_update_params.FilterUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FirewallFilter]._unwrapper,
- ),
- cast_to=cast(Type[FirewallFilter], ResultWrapper[FirewallFilter]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def list(
- self,
- *,
- zone_id: str,
- id: str | Omit = omit,
- description: str | Omit = omit,
- expression: str | Omit = omit,
- page: float | Omit = omit,
- paused: bool | Omit = omit,
- per_page: float | Omit = omit,
- ref: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> AsyncPaginator[FirewallFilter, AsyncV4PagePaginationArray[FirewallFilter]]:
- """Fetches filters in a zone.
-
- You can filter the results using several optional
- parameters.
-
- Args:
- zone_id: Defines an identifier.
-
- id: The unique identifier of the filter.
-
- description: A case-insensitive string to find in the description.
-
- expression: A case-insensitive string to find in the expression.
-
- page: Page number of paginated results.
-
- paused: When true, indicates that the filter is currently paused.
-
- per_page: Number of filters per page.
-
- ref: The filter ref (a short reference tag) to search for. Must be an exact match.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=AsyncV4PagePaginationArray[FirewallFilter],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "id": id,
- "description": description,
- "expression": expression,
- "page": page,
- "paused": paused,
- "per_page": per_page,
- "ref": ref,
- },
- filter_list_params.FilterListParams,
- ),
- ),
- model=FirewallFilter,
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- async def delete(
- self,
- filter_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> FilterDeleteResponse:
- """
- Deletes an existing filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return await self._delete(
- f"/zones/{zone_id}/filters/{filter_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FilterDeleteResponse]._unwrapper,
- ),
- cast_to=cast(Type[FilterDeleteResponse], ResultWrapper[FilterDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- async def bulk_delete(
- self,
- *,
- zone_id: str,
- id: SequenceNotStr[str],
- # 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,
- ) -> Optional[FilterBulkDeleteResponse]:
- """
- Deletes one or more existing filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._delete(
- f"/zones/{zone_id}/filters",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform({"id": id}, filter_bulk_delete_params.FilterBulkDeleteParams),
- post_parser=ResultWrapper[Optional[FilterBulkDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FilterBulkDeleteResponse]], ResultWrapper[FilterBulkDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- def bulk_update(
- self,
- *,
- zone_id: str,
- body: Iterable[filter_bulk_update_params.Body],
- # 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,
- ) -> AsyncPaginator[FirewallFilter, AsyncSinglePage[FirewallFilter]]:
- """
- Updates one or more existing filters.
-
- Args:
- zone_id: Defines an identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/filters",
- page=AsyncSinglePage[FirewallFilter],
- body=maybe_transform(body, Iterable[filter_bulk_update_params.Body]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=FirewallFilter,
- method="put",
- )
-
- @typing_extensions.deprecated(
- "The Filters API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#firewall-rules-api-and-filters-api for full details."
- )
- async def get(
- self,
- filter_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> FirewallFilter:
- """
- Fetches the details of a filter.
-
- Args:
- zone_id: Defines an identifier.
-
- filter_id: The unique identifier of the filter.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not filter_id:
- raise ValueError(f"Expected a non-empty value for `filter_id` but received {filter_id!r}")
- return await self._get(
- f"/zones/{zone_id}/filters/{filter_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[FirewallFilter]._unwrapper,
- ),
- cast_to=cast(Type[FirewallFilter], ResultWrapper[FirewallFilter]),
- )
-
-
-class FiltersResourceWithRawResponse:
- def __init__(self, filters: FiltersResource) -> None:
- self._filters = filters
-
- self.create = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.update = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.update, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_delete = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.bulk_delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_update = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.bulk_update, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- filters.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class AsyncFiltersResourceWithRawResponse:
- def __init__(self, filters: AsyncFiltersResource) -> None:
- self._filters = filters
-
- self.create = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.update = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.update, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_delete = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.bulk_delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_update = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.bulk_update, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- filters.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class FiltersResourceWithStreamingResponse:
- def __init__(self, filters: FiltersResource) -> None:
- self._filters = filters
-
- self.create = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.update = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.update, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_delete = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.bulk_delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_update = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.bulk_update, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- filters.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class AsyncFiltersResourceWithStreamingResponse:
- def __init__(self, filters: AsyncFiltersResource) -> None:
- self._filters = filters
-
- self.create = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.update = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.update, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_delete = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.bulk_delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.bulk_update = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.bulk_update, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- filters.get, # pyright: ignore[reportDeprecated],
- )
- )
diff --git a/src/cloudflare/resources/fraud.py b/src/cloudflare/resources/fraud.py
deleted file mode 100644
index 0d4c657d1c8..00000000000
--- a/src/cloudflare/resources/fraud.py
+++ /dev/null
@@ -1,319 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-from typing_extensions import Literal
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, 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 .._wrappers import ResultWrapper
-from ..types.fraud import fraud_update_params
-from .._base_client import make_request_options
-from ..types.fraud.fraud_settings import FraudSettings
-
-__all__ = ["FraudResource", "AsyncFraudResource"]
-
-
-class FraudResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> FraudResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return FraudResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> FraudResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return FraudResourceWithStreamingResponse(self)
-
- def update(
- self,
- *,
- zone_id: str,
- user_profiles: Literal["enabled", "disabled"] | Omit = omit,
- username_expressions: SequenceNotStr[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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> Optional[FraudSettings]:
- """
- Update Fraud Detection settings for a zone.
-
- Notes on `username_expressions` behavior:
-
- - If omitted or set to null, expressions are not modified.
- - If provided as an empty array `[]`, all expressions will be cleared.
-
- Args:
- zone_id: Identifier.
-
- user_profiles: Whether Fraud User Profiles is enabled for the zone.
-
- username_expressions: List of expressions to detect usernames in write HTTP requests.
-
- - Maximum of 10 expressions.
- - Omit or set to null to leave unchanged on update.
- - Provide an empty array `[]` to clear all expressions on update.
- - Invalid expressions will result in a 10400 Bad Request with details in the
- `messages` array.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._put(
- f"/zones/{zone_id}/fraud_detection/settings",
- body=maybe_transform(
- {
- "user_profiles": user_profiles,
- "username_expressions": username_expressions,
- },
- fraud_update_params.FraudUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[FraudSettings]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FraudSettings]], ResultWrapper[FraudSettings]),
- )
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[FraudSettings]:
- """
- Retrieve Fraud Detection settings for a zone.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/fraud_detection/settings",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[FraudSettings]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FraudSettings]], ResultWrapper[FraudSettings]),
- )
-
-
-class AsyncFraudResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncFraudResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncFraudResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncFraudResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncFraudResourceWithStreamingResponse(self)
-
- async def update(
- self,
- *,
- zone_id: str,
- user_profiles: Literal["enabled", "disabled"] | Omit = omit,
- username_expressions: SequenceNotStr[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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> Optional[FraudSettings]:
- """
- Update Fraud Detection settings for a zone.
-
- Notes on `username_expressions` behavior:
-
- - If omitted or set to null, expressions are not modified.
- - If provided as an empty array `[]`, all expressions will be cleared.
-
- Args:
- zone_id: Identifier.
-
- user_profiles: Whether Fraud User Profiles is enabled for the zone.
-
- username_expressions: List of expressions to detect usernames in write HTTP requests.
-
- - Maximum of 10 expressions.
- - Omit or set to null to leave unchanged on update.
- - Provide an empty array `[]` to clear all expressions on update.
- - Invalid expressions will result in a 10400 Bad Request with details in the
- `messages` array.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._put(
- f"/zones/{zone_id}/fraud_detection/settings",
- body=await async_maybe_transform(
- {
- "user_profiles": user_profiles,
- "username_expressions": username_expressions,
- },
- fraud_update_params.FraudUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[FraudSettings]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FraudSettings]], ResultWrapper[FraudSettings]),
- )
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[FraudSettings]:
- """
- Retrieve Fraud Detection settings for a zone.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/fraud_detection/settings",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[FraudSettings]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[FraudSettings]], ResultWrapper[FraudSettings]),
- )
-
-
-class FraudResourceWithRawResponse:
- def __init__(self, fraud: FraudResource) -> None:
- self._fraud = fraud
-
- self.update = to_raw_response_wrapper(
- fraud.update,
- )
- self.get = to_raw_response_wrapper(
- fraud.get,
- )
-
-
-class AsyncFraudResourceWithRawResponse:
- def __init__(self, fraud: AsyncFraudResource) -> None:
- self._fraud = fraud
-
- self.update = async_to_raw_response_wrapper(
- fraud.update,
- )
- self.get = async_to_raw_response_wrapper(
- fraud.get,
- )
-
-
-class FraudResourceWithStreamingResponse:
- def __init__(self, fraud: FraudResource) -> None:
- self._fraud = fraud
-
- self.update = to_streamed_response_wrapper(
- fraud.update,
- )
- self.get = to_streamed_response_wrapper(
- fraud.get,
- )
-
-
-class AsyncFraudResourceWithStreamingResponse:
- def __init__(self, fraud: AsyncFraudResource) -> None:
- self._fraud = fraud
-
- self.update = async_to_streamed_response_wrapper(
- fraud.update,
- )
- self.get = async_to_streamed_response_wrapper(
- fraud.get,
- )
diff --git a/src/cloudflare/resources/iam/user_groups/members.py b/src/cloudflare/resources/iam/user_groups/members.py
index 1e68197614f..cd55897743d 100644
--- a/src/cloudflare/resources/iam/user_groups/members.py
+++ b/src/cloudflare/resources/iam/user_groups/members.py
@@ -53,7 +53,7 @@ def create(
user_group_id: str,
*,
account_id: str | None = None,
- body: Iterable[member_create_params.Body],
+ members: Iterable[member_create_params.Member],
# 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,
@@ -89,7 +89,7 @@ def create(
account_id=account_id,
user_group_id=user_group_id,
),
- body=maybe_transform(body, Iterable[member_create_params.Body]),
+ body=maybe_transform(members, Iterable[member_create_params.Member]),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -105,7 +105,7 @@ def update(
user_group_id: str,
*,
account_id: str | None = None,
- body: Iterable[member_update_params.Body],
+ members: Iterable[member_update_params.Member],
# 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,
@@ -121,7 +121,7 @@ def update(
user_group_id: User Group identifier tag.
- body: Set/Replace members to a user group.
+ members: Set/Replace members to a user group.
extra_headers: Send extra headers
@@ -144,7 +144,7 @@ def update(
user_group_id=user_group_id,
),
page=SyncSinglePage[MemberUpdateResponse],
- body=maybe_transform(body, Iterable[member_update_params.Body]),
+ body=maybe_transform(members, Iterable[member_update_params.Member]),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -297,7 +297,7 @@ async def create(
user_group_id: str,
*,
account_id: str | None = None,
- body: Iterable[member_create_params.Body],
+ members: Iterable[member_create_params.Member],
# 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,
@@ -333,7 +333,7 @@ async def create(
account_id=account_id,
user_group_id=user_group_id,
),
- body=await async_maybe_transform(body, Iterable[member_create_params.Body]),
+ body=await async_maybe_transform(members, Iterable[member_create_params.Member]),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -349,7 +349,7 @@ def update(
user_group_id: str,
*,
account_id: str | None = None,
- body: Iterable[member_update_params.Body],
+ members: Iterable[member_update_params.Member],
# 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,
@@ -365,7 +365,7 @@ def update(
user_group_id: User Group identifier tag.
- body: Set/Replace members to a user group.
+ members: Set/Replace members to a user group.
extra_headers: Send extra headers
@@ -388,7 +388,7 @@ def update(
user_group_id=user_group_id,
),
page=AsyncSinglePage[MemberUpdateResponse],
- body=maybe_transform(body, Iterable[member_update_params.Body]),
+ body=maybe_transform(members, Iterable[member_update_params.Member]),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
diff --git a/src/cloudflare/resources/ips.py b/src/cloudflare/resources/ips.py
deleted file mode 100644
index 29d43e4eaa5..00000000000
--- a/src/cloudflare/resources/ips.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Any, Optional, cast
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..types.ips import ip_list_params
-from .._base_client import make_request_options
-from ..types.ips.ip_list_response import IPListResponse
-
-__all__ = ["IPsResource", "AsyncIPsResource"]
-
-
-class IPsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> IPsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return IPsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> IPsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return IPsResourceWithStreamingResponse(self)
-
- def list(
- self,
- *,
- networks: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> Optional[IPListResponse]:
- """
- Get IPs used on the Cloudflare/JD Cloud network, see
- https://www.cloudflare.com/ips for Cloudflare IPs or
- https://developers.cloudflare.com/china-network/reference/infrastructure/ for JD
- Cloud IPs.
-
- Args:
- networks: Specified as `jdcloud` to list IPs used by JD Cloud data centers.
-
- 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 cast(
- Optional[IPListResponse],
- self._get(
- "/ips",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform({"networks": networks}, ip_list_params.IPListParams),
- post_parser=ResultWrapper[Optional[IPListResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[IPListResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
-
-class AsyncIPsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncIPsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncIPsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncIPsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncIPsResourceWithStreamingResponse(self)
-
- async def list(
- self,
- *,
- networks: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> Optional[IPListResponse]:
- """
- Get IPs used on the Cloudflare/JD Cloud network, see
- https://www.cloudflare.com/ips for Cloudflare IPs or
- https://developers.cloudflare.com/china-network/reference/infrastructure/ for JD
- Cloud IPs.
-
- Args:
- networks: Specified as `jdcloud` to list IPs used by JD Cloud data centers.
-
- 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 cast(
- Optional[IPListResponse],
- await self._get(
- "/ips",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform({"networks": networks}, ip_list_params.IPListParams),
- post_parser=ResultWrapper[Optional[IPListResponse]]._unwrapper,
- ),
- cast_to=cast(
- Any, ResultWrapper[IPListResponse]
- ), # Union types cannot be passed in as arguments in the type system
- ),
- )
-
-
-class IPsResourceWithRawResponse:
- def __init__(self, ips: IPsResource) -> None:
- self._ips = ips
-
- self.list = to_raw_response_wrapper(
- ips.list,
- )
-
-
-class AsyncIPsResourceWithRawResponse:
- def __init__(self, ips: AsyncIPsResource) -> None:
- self._ips = ips
-
- self.list = async_to_raw_response_wrapper(
- ips.list,
- )
-
-
-class IPsResourceWithStreamingResponse:
- def __init__(self, ips: IPsResource) -> None:
- self._ips = ips
-
- self.list = to_streamed_response_wrapper(
- ips.list,
- )
-
-
-class AsyncIPsResourceWithStreamingResponse:
- def __init__(self, ips: AsyncIPsResource) -> None:
- self._ips = ips
-
- self.list = async_to_streamed_response_wrapper(
- ips.list,
- )
diff --git a/src/cloudflare/resources/keyless_certificates.py b/src/cloudflare/resources/keyless_certificates.py
deleted file mode 100644
index 8b0180c31d5..00000000000
--- a/src/cloudflare/resources/keyless_certificates.py
+++ /dev/null
@@ -1,713 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..pagination import SyncSinglePage, AsyncSinglePage
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.custom_hostnames import BundleMethod
-from ..types.keyless_certificates import keyless_certificate_edit_params, keyless_certificate_create_params
-from ..types.custom_hostnames.bundle_method import BundleMethod
-from ..types.keyless_certificates.tunnel_param import TunnelParam
-from ..types.keyless_certificates.keyless_certificate import KeylessCertificate
-from ..types.keyless_certificates.keyless_certificate_delete_response import KeylessCertificateDeleteResponse
-
-__all__ = ["KeylessCertificatesResource", "AsyncKeylessCertificatesResource"]
-
-
-class KeylessCertificatesResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> KeylessCertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return KeylessCertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> KeylessCertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return KeylessCertificatesResourceWithStreamingResponse(self)
-
- def create(
- self,
- *,
- zone_id: str,
- certificate: str,
- host: str,
- port: float,
- bundle_method: BundleMethod | Omit = omit,
- name: str | Omit = omit,
- tunnel: TunnelParam | 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,
- ) -> Optional[KeylessCertificate]:
- """
- Creates a Keyless SSL configuration that allows SSL/TLS termination without
- exposing private keys to Cloudflare. Keys remain on your infrastructure.
-
- Args:
- zone_id: Identifier.
-
- certificate: The zone's SSL certificate or SSL certificate and intermediate(s).
-
- host: The keyless SSL name.
-
- port: The keyless SSL port used to communicate between Cloudflare and the client's
- Keyless SSL server.
-
- bundle_method: A ubiquitous bundle has the highest probability of being verified everywhere,
- even by clients using outdated or unusual trust stores. An optimal bundle uses
- the shortest chain and newest intermediates. And the force bundle verifies the
- chain, but does not otherwise modify it.
-
- name: The keyless SSL name.
-
- tunnel: Configuration for using Keyless SSL through a Cloudflare Tunnel
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._post(
- f"/zones/{zone_id}/keyless_certificates",
- body=maybe_transform(
- {
- "certificate": certificate,
- "host": host,
- "port": port,
- "bundle_method": bundle_method,
- "name": name,
- "tunnel": tunnel,
- },
- keyless_certificate_create_params.KeylessCertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> SyncSinglePage[KeylessCertificate]:
- """
- List all Keyless SSL configurations for a given zone.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/keyless_certificates",
- page=SyncSinglePage[KeylessCertificate],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=KeylessCertificate,
- )
-
- def delete(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[KeylessCertificateDeleteResponse]:
- """Removes a Keyless SSL configuration.
-
- SSL connections will no longer use the
- keyless server for cryptographic operations.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return self._delete(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificateDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[KeylessCertificateDeleteResponse]], ResultWrapper[KeylessCertificateDeleteResponse]
- ),
- )
-
- def edit(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- enabled: bool | Omit = omit,
- host: str | Omit = omit,
- name: str | Omit = omit,
- port: float | Omit = omit,
- tunnel: TunnelParam | 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,
- ) -> Optional[KeylessCertificate]:
- """This will update attributes of a Keyless SSL.
-
- Consists of one or more of the
- following: host,name,port.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- enabled: Whether or not the Keyless SSL is on or off.
-
- host: The keyless SSL name.
-
- name: The keyless SSL name.
-
- port: The keyless SSL port used to communicate between Cloudflare and the client's
- Keyless SSL server.
-
- tunnel: Configuration for using Keyless SSL through a Cloudflare Tunnel
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return self._patch(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- body=maybe_transform(
- {
- "enabled": enabled,
- "host": host,
- "name": name,
- "port": port,
- "tunnel": tunnel,
- },
- keyless_certificate_edit_params.KeylessCertificateEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
- def get(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[KeylessCertificate]:
- """
- Get details for one Keyless SSL configuration.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return self._get(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
-
-class AsyncKeylessCertificatesResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncKeylessCertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncKeylessCertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncKeylessCertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncKeylessCertificatesResourceWithStreamingResponse(self)
-
- async def create(
- self,
- *,
- zone_id: str,
- certificate: str,
- host: str,
- port: float,
- bundle_method: BundleMethod | Omit = omit,
- name: str | Omit = omit,
- tunnel: TunnelParam | 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,
- ) -> Optional[KeylessCertificate]:
- """
- Creates a Keyless SSL configuration that allows SSL/TLS termination without
- exposing private keys to Cloudflare. Keys remain on your infrastructure.
-
- Args:
- zone_id: Identifier.
-
- certificate: The zone's SSL certificate or SSL certificate and intermediate(s).
-
- host: The keyless SSL name.
-
- port: The keyless SSL port used to communicate between Cloudflare and the client's
- Keyless SSL server.
-
- bundle_method: A ubiquitous bundle has the highest probability of being verified everywhere,
- even by clients using outdated or unusual trust stores. An optimal bundle uses
- the shortest chain and newest intermediates. And the force bundle verifies the
- chain, but does not otherwise modify it.
-
- name: The keyless SSL name.
-
- tunnel: Configuration for using Keyless SSL through a Cloudflare Tunnel
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._post(
- f"/zones/{zone_id}/keyless_certificates",
- body=await async_maybe_transform(
- {
- "certificate": certificate,
- "host": host,
- "port": port,
- "bundle_method": bundle_method,
- "name": name,
- "tunnel": tunnel,
- },
- keyless_certificate_create_params.KeylessCertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> AsyncPaginator[KeylessCertificate, AsyncSinglePage[KeylessCertificate]]:
- """
- List all Keyless SSL configurations for a given zone.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/keyless_certificates",
- page=AsyncSinglePage[KeylessCertificate],
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- model=KeylessCertificate,
- )
-
- async def delete(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[KeylessCertificateDeleteResponse]:
- """Removes a Keyless SSL configuration.
-
- SSL connections will no longer use the
- keyless server for cryptographic operations.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return await self._delete(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificateDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[KeylessCertificateDeleteResponse]], ResultWrapper[KeylessCertificateDeleteResponse]
- ),
- )
-
- async def edit(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- enabled: bool | Omit = omit,
- host: str | Omit = omit,
- name: str | Omit = omit,
- port: float | Omit = omit,
- tunnel: TunnelParam | 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,
- ) -> Optional[KeylessCertificate]:
- """This will update attributes of a Keyless SSL.
-
- Consists of one or more of the
- following: host,name,port.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- enabled: Whether or not the Keyless SSL is on or off.
-
- host: The keyless SSL name.
-
- name: The keyless SSL name.
-
- port: The keyless SSL port used to communicate between Cloudflare and the client's
- Keyless SSL server.
-
- tunnel: Configuration for using Keyless SSL through a Cloudflare Tunnel
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return await self._patch(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- body=await async_maybe_transform(
- {
- "enabled": enabled,
- "host": host,
- "name": name,
- "port": port,
- "tunnel": tunnel,
- },
- keyless_certificate_edit_params.KeylessCertificateEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
- async def get(
- self,
- keyless_certificate_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[KeylessCertificate]:
- """
- Get details for one Keyless SSL configuration.
-
- Args:
- zone_id: Identifier.
-
- keyless_certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not keyless_certificate_id:
- raise ValueError(
- f"Expected a non-empty value for `keyless_certificate_id` but received {keyless_certificate_id!r}"
- )
- return await self._get(
- f"/zones/{zone_id}/keyless_certificates/{keyless_certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[KeylessCertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[KeylessCertificate]], ResultWrapper[KeylessCertificate]),
- )
-
-
-class KeylessCertificatesResourceWithRawResponse:
- def __init__(self, keyless_certificates: KeylessCertificatesResource) -> None:
- self._keyless_certificates = keyless_certificates
-
- self.create = to_raw_response_wrapper(
- keyless_certificates.create,
- )
- self.list = to_raw_response_wrapper(
- keyless_certificates.list,
- )
- self.delete = to_raw_response_wrapper(
- keyless_certificates.delete,
- )
- self.edit = to_raw_response_wrapper(
- keyless_certificates.edit,
- )
- self.get = to_raw_response_wrapper(
- keyless_certificates.get,
- )
-
-
-class AsyncKeylessCertificatesResourceWithRawResponse:
- def __init__(self, keyless_certificates: AsyncKeylessCertificatesResource) -> None:
- self._keyless_certificates = keyless_certificates
-
- self.create = async_to_raw_response_wrapper(
- keyless_certificates.create,
- )
- self.list = async_to_raw_response_wrapper(
- keyless_certificates.list,
- )
- self.delete = async_to_raw_response_wrapper(
- keyless_certificates.delete,
- )
- self.edit = async_to_raw_response_wrapper(
- keyless_certificates.edit,
- )
- self.get = async_to_raw_response_wrapper(
- keyless_certificates.get,
- )
-
-
-class KeylessCertificatesResourceWithStreamingResponse:
- def __init__(self, keyless_certificates: KeylessCertificatesResource) -> None:
- self._keyless_certificates = keyless_certificates
-
- self.create = to_streamed_response_wrapper(
- keyless_certificates.create,
- )
- self.list = to_streamed_response_wrapper(
- keyless_certificates.list,
- )
- self.delete = to_streamed_response_wrapper(
- keyless_certificates.delete,
- )
- self.edit = to_streamed_response_wrapper(
- keyless_certificates.edit,
- )
- self.get = to_streamed_response_wrapper(
- keyless_certificates.get,
- )
-
-
-class AsyncKeylessCertificatesResourceWithStreamingResponse:
- def __init__(self, keyless_certificates: AsyncKeylessCertificatesResource) -> None:
- self._keyless_certificates = keyless_certificates
-
- self.create = async_to_streamed_response_wrapper(
- keyless_certificates.create,
- )
- self.list = async_to_streamed_response_wrapper(
- keyless_certificates.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- keyless_certificates.delete,
- )
- self.edit = async_to_streamed_response_wrapper(
- keyless_certificates.edit,
- )
- self.get = async_to_streamed_response_wrapper(
- keyless_certificates.get,
- )
diff --git a/src/cloudflare/resources/logpush/datasets/fields.py b/src/cloudflare/resources/logpush/datasets/fields.py
index 9e49fbc0cad..cd59d6f68ba 100644
--- a/src/cloudflare/resources/logpush/datasets/fields.py
+++ b/src/cloudflare/resources/logpush/datasets/fields.py
@@ -58,6 +58,7 @@ def get(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
@@ -180,6 +181,7 @@ async def get(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
diff --git a/src/cloudflare/resources/logpush/datasets/jobs.py b/src/cloudflare/resources/logpush/datasets/jobs.py
index 5cbac38c0aa..1902463dd00 100644
--- a/src/cloudflare/resources/logpush/datasets/jobs.py
+++ b/src/cloudflare/resources/logpush/datasets/jobs.py
@@ -59,6 +59,7 @@ def get(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
@@ -176,6 +177,7 @@ def get(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
diff --git a/src/cloudflare/resources/logpush/jobs.py b/src/cloudflare/resources/logpush/jobs.py
index 923de998f9c..cd1c3d91d4a 100644
--- a/src/cloudflare/resources/logpush/jobs.py
+++ b/src/cloudflare/resources/logpush/jobs.py
@@ -68,6 +68,7 @@ def create(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
@@ -592,6 +593,7 @@ async def create(
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
diff --git a/src/cloudflare/resources/managed_transforms.py b/src/cloudflare/resources/managed_transforms.py
deleted file mode 100644
index 1b70c745c06..00000000000
--- a/src/cloudflare/resources/managed_transforms.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Iterable, cast
-
-import httpx
-
-from .._types import Body, Query, Headers, NoneType, NotGiven, 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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.managed_transforms import managed_transform_edit_params
-from ..types.managed_transforms.managed_transform_edit_response import ManagedTransformEditResponse
-from ..types.managed_transforms.managed_transform_list_response import ManagedTransformListResponse
-
-__all__ = ["ManagedTransformsResource", "AsyncManagedTransformsResource"]
-
-
-class ManagedTransformsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ManagedTransformsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return ManagedTransformsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ManagedTransformsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return ManagedTransformsResourceWithStreamingResponse(self)
-
- def list(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> ManagedTransformListResponse:
- """
- Fetches a list of all Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/managed_headers",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ManagedTransformListResponse]._unwrapper,
- ),
- cast_to=cast(Type[ManagedTransformListResponse], ResultWrapper[ManagedTransformListResponse]),
- )
-
- def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> None:
- """
- Disables all Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- extra_headers = {"Accept": "*/*", **(extra_headers or {})}
- return self._delete(
- f"/zones/{zone_id}/managed_headers",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=NoneType,
- )
-
- def edit(
- self,
- *,
- zone_id: str,
- managed_request_headers: Iterable[managed_transform_edit_params.ManagedRequestHeader],
- managed_response_headers: Iterable[managed_transform_edit_params.ManagedResponseHeader],
- # 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,
- ) -> ManagedTransformEditResponse:
- """
- Updates the status of one or more Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- managed_request_headers: The list of Managed Request Transforms.
-
- managed_response_headers: The list of Managed Response Transforms.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._patch(
- f"/zones/{zone_id}/managed_headers",
- body=maybe_transform(
- {
- "managed_request_headers": managed_request_headers,
- "managed_response_headers": managed_response_headers,
- },
- managed_transform_edit_params.ManagedTransformEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ManagedTransformEditResponse]._unwrapper,
- ),
- cast_to=cast(Type[ManagedTransformEditResponse], ResultWrapper[ManagedTransformEditResponse]),
- )
-
-
-class AsyncManagedTransformsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncManagedTransformsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncManagedTransformsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncManagedTransformsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncManagedTransformsResourceWithStreamingResponse(self)
-
- async def list(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> ManagedTransformListResponse:
- """
- Fetches a list of all Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/managed_headers",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ManagedTransformListResponse]._unwrapper,
- ),
- cast_to=cast(Type[ManagedTransformListResponse], ResultWrapper[ManagedTransformListResponse]),
- )
-
- async def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> None:
- """
- Disables all Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- extra_headers = {"Accept": "*/*", **(extra_headers or {})}
- return await self._delete(
- f"/zones/{zone_id}/managed_headers",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=NoneType,
- )
-
- async def edit(
- self,
- *,
- zone_id: str,
- managed_request_headers: Iterable[managed_transform_edit_params.ManagedRequestHeader],
- managed_response_headers: Iterable[managed_transform_edit_params.ManagedResponseHeader],
- # 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,
- ) -> ManagedTransformEditResponse:
- """
- Updates the status of one or more Managed Transforms.
-
- Args:
- zone_id: The unique ID of the zone.
-
- managed_request_headers: The list of Managed Request Transforms.
-
- managed_response_headers: The list of Managed Response Transforms.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._patch(
- f"/zones/{zone_id}/managed_headers",
- body=await async_maybe_transform(
- {
- "managed_request_headers": managed_request_headers,
- "managed_response_headers": managed_response_headers,
- },
- managed_transform_edit_params.ManagedTransformEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ManagedTransformEditResponse]._unwrapper,
- ),
- cast_to=cast(Type[ManagedTransformEditResponse], ResultWrapper[ManagedTransformEditResponse]),
- )
-
-
-class ManagedTransformsResourceWithRawResponse:
- def __init__(self, managed_transforms: ManagedTransformsResource) -> None:
- self._managed_transforms = managed_transforms
-
- self.list = to_raw_response_wrapper(
- managed_transforms.list,
- )
- self.delete = to_raw_response_wrapper(
- managed_transforms.delete,
- )
- self.edit = to_raw_response_wrapper(
- managed_transforms.edit,
- )
-
-
-class AsyncManagedTransformsResourceWithRawResponse:
- def __init__(self, managed_transforms: AsyncManagedTransformsResource) -> None:
- self._managed_transforms = managed_transforms
-
- self.list = async_to_raw_response_wrapper(
- managed_transforms.list,
- )
- self.delete = async_to_raw_response_wrapper(
- managed_transforms.delete,
- )
- self.edit = async_to_raw_response_wrapper(
- managed_transforms.edit,
- )
-
-
-class ManagedTransformsResourceWithStreamingResponse:
- def __init__(self, managed_transforms: ManagedTransformsResource) -> None:
- self._managed_transforms = managed_transforms
-
- self.list = to_streamed_response_wrapper(
- managed_transforms.list,
- )
- self.delete = to_streamed_response_wrapper(
- managed_transforms.delete,
- )
- self.edit = to_streamed_response_wrapper(
- managed_transforms.edit,
- )
-
-
-class AsyncManagedTransformsResourceWithStreamingResponse:
- def __init__(self, managed_transforms: AsyncManagedTransformsResource) -> None:
- self._managed_transforms = managed_transforms
-
- self.list = async_to_streamed_response_wrapper(
- managed_transforms.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- managed_transforms.delete,
- )
- self.edit = async_to_streamed_response_wrapper(
- managed_transforms.edit,
- )
diff --git a/src/cloudflare/resources/memberships.py b/src/cloudflare/resources/memberships.py
deleted file mode 100644
index 1bc6e6ba7b3..00000000000
--- a/src/cloudflare/resources/memberships.py
+++ /dev/null
@@ -1,515 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-from typing_extensions import Literal
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.memberships import membership_list_params, membership_update_params
-from ..types.memberships.membership import Membership
-from ..types.memberships.membership_get_response import MembershipGetResponse
-from ..types.memberships.membership_delete_response import MembershipDeleteResponse
-from ..types.memberships.membership_update_response import MembershipUpdateResponse
-
-__all__ = ["MembershipsResource", "AsyncMembershipsResource"]
-
-
-class MembershipsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> MembershipsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return MembershipsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> MembershipsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return MembershipsResourceWithStreamingResponse(self)
-
- def update(
- self,
- membership_id: str,
- *,
- status: Literal["accepted", "rejected"],
- # 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,
- ) -> Optional[MembershipUpdateResponse]:
- """
- Accept or reject this account invitation.
-
- Args:
- membership_id: Membership identifier tag.
-
- status: Whether to accept or reject this account invitation.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return self._put(
- f"/memberships/{membership_id}",
- body=maybe_transform({"status": status}, membership_update_params.MembershipUpdateParams),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipUpdateResponse]], ResultWrapper[MembershipUpdateResponse]),
- )
-
- def list(
- self,
- *,
- account: membership_list_params.Account | Omit = omit,
- direction: Literal["asc", "desc"] | Omit = omit,
- name: str | Omit = omit,
- order: Literal["id", "account.name", "status"] | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- status: Literal["accepted", "pending", "rejected"] | 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,
- ) -> SyncV4PagePaginationArray[Membership]:
- """
- List memberships of accounts the user can access.
-
- Args:
- direction: Direction to order memberships.
-
- name: Account name
-
- order: Field to order memberships by.
-
- page: Page number of paginated results.
-
- per_page: Number of memberships per page.
-
- status: Status of this membership.
-
- 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_api_list(
- "/memberships",
- page=SyncV4PagePaginationArray[Membership],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "account": account,
- "direction": direction,
- "name": name,
- "order": order,
- "page": page,
- "per_page": per_page,
- "status": status,
- },
- membership_list_params.MembershipListParams,
- ),
- ),
- model=Membership,
- )
-
- def delete(
- self,
- membership_id: str,
- *,
- # 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,
- ) -> Optional[MembershipDeleteResponse]:
- """
- Remove the associated member from an account.
-
- Args:
- membership_id: Membership identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return self._delete(
- f"/memberships/{membership_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipDeleteResponse]], ResultWrapper[MembershipDeleteResponse]),
- )
-
- def get(
- self,
- membership_id: str,
- *,
- # 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,
- ) -> Optional[MembershipGetResponse]:
- """
- Get a specific membership.
-
- Args:
- membership_id: Membership identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return self._get(
- f"/memberships/{membership_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipGetResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipGetResponse]], ResultWrapper[MembershipGetResponse]),
- )
-
-
-class AsyncMembershipsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncMembershipsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncMembershipsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncMembershipsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncMembershipsResourceWithStreamingResponse(self)
-
- async def update(
- self,
- membership_id: str,
- *,
- status: Literal["accepted", "rejected"],
- # 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,
- ) -> Optional[MembershipUpdateResponse]:
- """
- Accept or reject this account invitation.
-
- Args:
- membership_id: Membership identifier tag.
-
- status: Whether to accept or reject this account invitation.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return await self._put(
- f"/memberships/{membership_id}",
- body=await async_maybe_transform({"status": status}, membership_update_params.MembershipUpdateParams),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipUpdateResponse]], ResultWrapper[MembershipUpdateResponse]),
- )
-
- def list(
- self,
- *,
- account: membership_list_params.Account | Omit = omit,
- direction: Literal["asc", "desc"] | Omit = omit,
- name: str | Omit = omit,
- order: Literal["id", "account.name", "status"] | Omit = omit,
- page: float | Omit = omit,
- per_page: float | Omit = omit,
- status: Literal["accepted", "pending", "rejected"] | 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,
- ) -> AsyncPaginator[Membership, AsyncV4PagePaginationArray[Membership]]:
- """
- List memberships of accounts the user can access.
-
- Args:
- direction: Direction to order memberships.
-
- name: Account name
-
- order: Field to order memberships by.
-
- page: Page number of paginated results.
-
- per_page: Number of memberships per page.
-
- status: Status of this membership.
-
- 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_api_list(
- "/memberships",
- page=AsyncV4PagePaginationArray[Membership],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "account": account,
- "direction": direction,
- "name": name,
- "order": order,
- "page": page,
- "per_page": per_page,
- "status": status,
- },
- membership_list_params.MembershipListParams,
- ),
- ),
- model=Membership,
- )
-
- async def delete(
- self,
- membership_id: str,
- *,
- # 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,
- ) -> Optional[MembershipDeleteResponse]:
- """
- Remove the associated member from an account.
-
- Args:
- membership_id: Membership identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return await self._delete(
- f"/memberships/{membership_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipDeleteResponse]], ResultWrapper[MembershipDeleteResponse]),
- )
-
- async def get(
- self,
- membership_id: str,
- *,
- # 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,
- ) -> Optional[MembershipGetResponse]:
- """
- Get a specific membership.
-
- Args:
- membership_id: Membership identifier tag.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not membership_id:
- raise ValueError(f"Expected a non-empty value for `membership_id` but received {membership_id!r}")
- return await self._get(
- f"/memberships/{membership_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[MembershipGetResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[MembershipGetResponse]], ResultWrapper[MembershipGetResponse]),
- )
-
-
-class MembershipsResourceWithRawResponse:
- def __init__(self, memberships: MembershipsResource) -> None:
- self._memberships = memberships
-
- self.update = to_raw_response_wrapper(
- memberships.update,
- )
- self.list = to_raw_response_wrapper(
- memberships.list,
- )
- self.delete = to_raw_response_wrapper(
- memberships.delete,
- )
- self.get = to_raw_response_wrapper(
- memberships.get,
- )
-
-
-class AsyncMembershipsResourceWithRawResponse:
- def __init__(self, memberships: AsyncMembershipsResource) -> None:
- self._memberships = memberships
-
- self.update = async_to_raw_response_wrapper(
- memberships.update,
- )
- self.list = async_to_raw_response_wrapper(
- memberships.list,
- )
- self.delete = async_to_raw_response_wrapper(
- memberships.delete,
- )
- self.get = async_to_raw_response_wrapper(
- memberships.get,
- )
-
-
-class MembershipsResourceWithStreamingResponse:
- def __init__(self, memberships: MembershipsResource) -> None:
- self._memberships = memberships
-
- self.update = to_streamed_response_wrapper(
- memberships.update,
- )
- self.list = to_streamed_response_wrapper(
- memberships.list,
- )
- self.delete = to_streamed_response_wrapper(
- memberships.delete,
- )
- self.get = to_streamed_response_wrapper(
- memberships.get,
- )
-
-
-class AsyncMembershipsResourceWithStreamingResponse:
- def __init__(self, memberships: AsyncMembershipsResource) -> None:
- self._memberships = memberships
-
- self.update = async_to_streamed_response_wrapper(
- memberships.update,
- )
- self.list = async_to_streamed_response_wrapper(
- memberships.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- memberships.delete,
- )
- self.get = async_to_streamed_response_wrapper(
- memberships.get,
- )
diff --git a/src/cloudflare/resources/organizations/organization_profile.py b/src/cloudflare/resources/organizations/organization_profile.py
index 5d11872fc2d..1bf721d9640 100644
--- a/src/cloudflare/resources/organizations/organization_profile.py
+++ b/src/cloudflare/resources/organizations/organization_profile.py
@@ -19,9 +19,7 @@
from ..._wrappers import ResultWrapper
from ..._base_client import make_request_options
from ...types.organizations import organization_profile_update_params
-from ...types.organizations.organization_profile_get_params import ( # type: ignore[import-not-found] # pyright: ignore[reportMissingImports]
- Result, # pyright: ignore[reportUnknownVariableType]
-)
+from ...types.organizations.organization_profile_get_params import Result
__all__ = ["OrganizationProfileResource", "AsyncOrganizationProfileResource"]
@@ -97,7 +95,7 @@ def update(
cast_to=NoneType,
)
- def get( # pyright: ignore[reportUnknownParameterType]
+ def get(
self,
organization_id: str,
*,
@@ -131,9 +129,9 @@ def get( # pyright: ignore[reportUnknownParameterType]
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Result]._unwrapper, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ post_parser=ResultWrapper[Result]._unwrapper,
),
- cast_to=cast(Type[Result], ResultWrapper[Result]), # pyright: ignore[reportUnknownArgumentType]
+ cast_to=cast(Type[Result], ResultWrapper[Result]),
)
@@ -208,7 +206,7 @@ async def update(
cast_to=NoneType,
)
- async def get( # pyright: ignore[reportUnknownParameterType]
+ async def get(
self,
organization_id: str,
*,
@@ -242,9 +240,9 @@ async def get( # pyright: ignore[reportUnknownParameterType]
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Result]._unwrapper, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ post_parser=ResultWrapper[Result]._unwrapper,
),
- cast_to=cast(Type[Result], ResultWrapper[Result]), # pyright: ignore[reportUnknownArgumentType]
+ cast_to=cast(Type[Result], ResultWrapper[Result]),
)
@@ -256,7 +254,7 @@ def __init__(self, organization_profile: OrganizationProfileResource) -> None:
organization_profile.update,
)
self.get = to_raw_response_wrapper(
- organization_profile.get, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ organization_profile.get,
)
@@ -268,7 +266,7 @@ def __init__(self, organization_profile: AsyncOrganizationProfileResource) -> No
organization_profile.update,
)
self.get = async_to_raw_response_wrapper(
- organization_profile.get, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ organization_profile.get,
)
@@ -280,7 +278,7 @@ def __init__(self, organization_profile: OrganizationProfileResource) -> None:
organization_profile.update,
)
self.get = to_streamed_response_wrapper(
- organization_profile.get, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ organization_profile.get,
)
@@ -292,5 +290,5 @@ def __init__(self, organization_profile: AsyncOrganizationProfileResource) -> No
organization_profile.update,
)
self.get = async_to_streamed_response_wrapper(
- organization_profile.get, # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
+ organization_profile.get,
)
diff --git a/src/cloudflare/resources/origin_ca_certificates.py b/src/cloudflare/resources/origin_ca_certificates.py
deleted file mode 100644
index 1943091279a..00000000000
--- a/src/cloudflare/resources/origin_ca_certificates.py
+++ /dev/null
@@ -1,569 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, 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 .._wrappers import ResultWrapper
-from ..types.ssl import RequestValidity
-from ..pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.ssl.request_validity import RequestValidity
-from ..types.origin_ca_certificates import origin_ca_certificate_list_params, origin_ca_certificate_create_params
-from ..types.shared.certificate_request_type import CertificateRequestType
-from ..types.origin_ca_certificates.origin_ca_certificate import OriginCACertificate
-from ..types.origin_ca_certificates.origin_ca_certificate_delete_response import OriginCACertificateDeleteResponse
-
-__all__ = ["OriginCACertificatesResource", "AsyncOriginCACertificatesResource"]
-
-
-class OriginCACertificatesResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> OriginCACertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return OriginCACertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> OriginCACertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return OriginCACertificatesResourceWithStreamingResponse(self)
-
- def create(
- self,
- *,
- csr: str,
- hostnames: SequenceNotStr[str],
- request_type: CertificateRequestType,
- requested_validity: RequestValidity | 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,
- ) -> Optional[OriginCACertificate]:
- """Create an Origin CA certificate.
-
- You can use an Origin CA Key as your User
- Service Key or an API token when calling this endpoint ([see above](#requests)).
-
- Args:
- csr: The Certificate Signing Request (CSR). Must be newline-encoded.
-
- hostnames: Array of hostnames or wildcard names bound to the certificate. Hostnames must be
- fully qualified domain names (FQDNs) belonging to zones on your account (e.g.,
- `example.com` or `sub.example.com`). Wildcards are supported only as a `*.`
- prefix for a single level (e.g., `*.example.com`). Double wildcards
- (`*.*.example.com`) and interior wildcards (`foo.*.example.com`) are not
- allowed. The wildcard suffix must be a multi-label domain (`*.example.com` is
- valid, but `*.com` is not). Unicode/IDN hostnames are accepted and automatically
- converted to punycode.
-
- request_type: Signature type desired on certificate ("origin-rsa" (rsa), "origin-ecc" (ecdsa),
- or "keyless-certificate" (for Keyless SSL servers).
-
- requested_validity: The number of days for which the certificate should be 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._post(
- "/certificates",
- body=maybe_transform(
- {
- "csr": csr,
- "hostnames": hostnames,
- "request_type": request_type,
- "requested_validity": requested_validity,
- },
- origin_ca_certificate_create_params.OriginCACertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[OriginCACertificate]], ResultWrapper[OriginCACertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- limit: int | Omit = omit,
- offset: int | Omit = omit,
- page: float | Omit = omit,
- per_page: float | 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,
- ) -> SyncV4PagePaginationArray[OriginCACertificate]:
- """List all existing Origin CA certificates for a given zone.
-
- You can use an Origin
- CA Key as your User Service Key or an API token when calling this endpoint
- ([see above](#requests)).
-
- Args:
- zone_id: Identifier.
-
- limit: Limit to the number of records returned.
-
- offset: Offset the results
-
- page: Page number of paginated results.
-
- per_page: Number of records per page.
-
- 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_api_list(
- "/certificates",
- page=SyncV4PagePaginationArray[OriginCACertificate],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "zone_id": zone_id,
- "limit": limit,
- "offset": offset,
- "page": page,
- "per_page": per_page,
- },
- origin_ca_certificate_list_params.OriginCACertificateListParams,
- ),
- ),
- model=OriginCACertificate,
- )
-
- def delete(
- self,
- certificate_id: str,
- *,
- # 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,
- ) -> Optional[OriginCACertificateDeleteResponse]:
- """Revoke an existing Origin CA certificate by its serial number.
-
- You can use an
- Origin CA Key as your User Service Key or an API token when calling this
- endpoint ([see above](#requests)).
-
- Args:
- certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not certificate_id:
- raise ValueError(f"Expected a non-empty value for `certificate_id` but received {certificate_id!r}")
- return self._delete(
- f"/certificates/{certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificateDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginCACertificateDeleteResponse]], ResultWrapper[OriginCACertificateDeleteResponse]
- ),
- )
-
- def get(
- self,
- certificate_id: str,
- *,
- # 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,
- ) -> Optional[OriginCACertificate]:
- """Get an existing Origin CA certificate by its serial number.
-
- You can use an
- Origin CA Key as your User Service Key or an API token when calling this
- endpoint ([see above](#requests)).
-
- Args:
- certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not certificate_id:
- raise ValueError(f"Expected a non-empty value for `certificate_id` but received {certificate_id!r}")
- return self._get(
- f"/certificates/{certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[OriginCACertificate]], ResultWrapper[OriginCACertificate]),
- )
-
-
-class AsyncOriginCACertificatesResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncOriginCACertificatesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncOriginCACertificatesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncOriginCACertificatesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncOriginCACertificatesResourceWithStreamingResponse(self)
-
- async def create(
- self,
- *,
- csr: str,
- hostnames: SequenceNotStr[str],
- request_type: CertificateRequestType,
- requested_validity: RequestValidity | 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,
- ) -> Optional[OriginCACertificate]:
- """Create an Origin CA certificate.
-
- You can use an Origin CA Key as your User
- Service Key or an API token when calling this endpoint ([see above](#requests)).
-
- Args:
- csr: The Certificate Signing Request (CSR). Must be newline-encoded.
-
- hostnames: Array of hostnames or wildcard names bound to the certificate. Hostnames must be
- fully qualified domain names (FQDNs) belonging to zones on your account (e.g.,
- `example.com` or `sub.example.com`). Wildcards are supported only as a `*.`
- prefix for a single level (e.g., `*.example.com`). Double wildcards
- (`*.*.example.com`) and interior wildcards (`foo.*.example.com`) are not
- allowed. The wildcard suffix must be a multi-label domain (`*.example.com` is
- valid, but `*.com` is not). Unicode/IDN hostnames are accepted and automatically
- converted to punycode.
-
- request_type: Signature type desired on certificate ("origin-rsa" (rsa), "origin-ecc" (ecdsa),
- or "keyless-certificate" (for Keyless SSL servers).
-
- requested_validity: The number of days for which the certificate should be 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._post(
- "/certificates",
- body=await async_maybe_transform(
- {
- "csr": csr,
- "hostnames": hostnames,
- "request_type": request_type,
- "requested_validity": requested_validity,
- },
- origin_ca_certificate_create_params.OriginCACertificateCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[OriginCACertificate]], ResultWrapper[OriginCACertificate]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- limit: int | Omit = omit,
- offset: int | Omit = omit,
- page: float | Omit = omit,
- per_page: float | 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,
- ) -> AsyncPaginator[OriginCACertificate, AsyncV4PagePaginationArray[OriginCACertificate]]:
- """List all existing Origin CA certificates for a given zone.
-
- You can use an Origin
- CA Key as your User Service Key or an API token when calling this endpoint
- ([see above](#requests)).
-
- Args:
- zone_id: Identifier.
-
- limit: Limit to the number of records returned.
-
- offset: Offset the results
-
- page: Page number of paginated results.
-
- per_page: Number of records per page.
-
- 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_api_list(
- "/certificates",
- page=AsyncV4PagePaginationArray[OriginCACertificate],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "zone_id": zone_id,
- "limit": limit,
- "offset": offset,
- "page": page,
- "per_page": per_page,
- },
- origin_ca_certificate_list_params.OriginCACertificateListParams,
- ),
- ),
- model=OriginCACertificate,
- )
-
- async def delete(
- self,
- certificate_id: str,
- *,
- # 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,
- ) -> Optional[OriginCACertificateDeleteResponse]:
- """Revoke an existing Origin CA certificate by its serial number.
-
- You can use an
- Origin CA Key as your User Service Key or an API token when calling this
- endpoint ([see above](#requests)).
-
- Args:
- certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not certificate_id:
- raise ValueError(f"Expected a non-empty value for `certificate_id` but received {certificate_id!r}")
- return await self._delete(
- f"/certificates/{certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificateDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginCACertificateDeleteResponse]], ResultWrapper[OriginCACertificateDeleteResponse]
- ),
- )
-
- async def get(
- self,
- certificate_id: str,
- *,
- # 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,
- ) -> Optional[OriginCACertificate]:
- """Get an existing Origin CA certificate by its serial number.
-
- You can use an
- Origin CA Key as your User Service Key or an API token when calling this
- endpoint ([see above](#requests)).
-
- Args:
- certificate_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not certificate_id:
- raise ValueError(f"Expected a non-empty value for `certificate_id` but received {certificate_id!r}")
- return await self._get(
- f"/certificates/{certificate_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginCACertificate]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[OriginCACertificate]], ResultWrapper[OriginCACertificate]),
- )
-
-
-class OriginCACertificatesResourceWithRawResponse:
- def __init__(self, origin_ca_certificates: OriginCACertificatesResource) -> None:
- self._origin_ca_certificates = origin_ca_certificates
-
- self.create = to_raw_response_wrapper(
- origin_ca_certificates.create,
- )
- self.list = to_raw_response_wrapper(
- origin_ca_certificates.list,
- )
- self.delete = to_raw_response_wrapper(
- origin_ca_certificates.delete,
- )
- self.get = to_raw_response_wrapper(
- origin_ca_certificates.get,
- )
-
-
-class AsyncOriginCACertificatesResourceWithRawResponse:
- def __init__(self, origin_ca_certificates: AsyncOriginCACertificatesResource) -> None:
- self._origin_ca_certificates = origin_ca_certificates
-
- self.create = async_to_raw_response_wrapper(
- origin_ca_certificates.create,
- )
- self.list = async_to_raw_response_wrapper(
- origin_ca_certificates.list,
- )
- self.delete = async_to_raw_response_wrapper(
- origin_ca_certificates.delete,
- )
- self.get = async_to_raw_response_wrapper(
- origin_ca_certificates.get,
- )
-
-
-class OriginCACertificatesResourceWithStreamingResponse:
- def __init__(self, origin_ca_certificates: OriginCACertificatesResource) -> None:
- self._origin_ca_certificates = origin_ca_certificates
-
- self.create = to_streamed_response_wrapper(
- origin_ca_certificates.create,
- )
- self.list = to_streamed_response_wrapper(
- origin_ca_certificates.list,
- )
- self.delete = to_streamed_response_wrapper(
- origin_ca_certificates.delete,
- )
- self.get = to_streamed_response_wrapper(
- origin_ca_certificates.get,
- )
-
-
-class AsyncOriginCACertificatesResourceWithStreamingResponse:
- def __init__(self, origin_ca_certificates: AsyncOriginCACertificatesResource) -> None:
- self._origin_ca_certificates = origin_ca_certificates
-
- self.create = async_to_streamed_response_wrapper(
- origin_ca_certificates.create,
- )
- self.list = async_to_streamed_response_wrapper(
- origin_ca_certificates.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- origin_ca_certificates.delete,
- )
- self.get = async_to_streamed_response_wrapper(
- origin_ca_certificates.get,
- )
diff --git a/src/cloudflare/resources/origin_post_quantum_encryption.py b/src/cloudflare/resources/origin_post_quantum_encryption.py
deleted file mode 100644
index d049002bc21..00000000000
--- a/src/cloudflare/resources/origin_post_quantum_encryption.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Optional, cast
-from typing_extensions import Literal
-
-import httpx
-
-from .._types import Body, Query, Headers, NotGiven, 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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.origin_post_quantum_encryption import origin_post_quantum_encryption_update_params
-from ..types.origin_post_quantum_encryption.origin_post_quantum_encryption_get_response import (
- OriginPostQuantumEncryptionGetResponse,
-)
-from ..types.origin_post_quantum_encryption.origin_post_quantum_encryption_update_response import (
- OriginPostQuantumEncryptionUpdateResponse,
-)
-
-__all__ = ["OriginPostQuantumEncryptionResource", "AsyncOriginPostQuantumEncryptionResource"]
-
-
-class OriginPostQuantumEncryptionResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> OriginPostQuantumEncryptionResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return OriginPostQuantumEncryptionResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> OriginPostQuantumEncryptionResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return OriginPostQuantumEncryptionResourceWithStreamingResponse(self)
-
- def update(
- self,
- *,
- zone_id: str,
- value: Literal["preferred", "supported", "off"],
- # 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,
- ) -> Optional[OriginPostQuantumEncryptionUpdateResponse]:
- """
- Instructs Cloudflare to use Post-Quantum (PQ) key agreement algorithms when
- connecting to your origin. Preferred instructs Cloudflare to opportunistically
- send a Post-Quantum keyshare in the first message to the origin (for fastest
- connections when the origin supports and prefers PQ), supported means that PQ
- algorithms are advertised but only used when requested by the origin, and off
- means that PQ algorithms are not advertised.
-
- Args:
- zone_id: Identifier.
-
- value: Value of the Origin Post Quantum Encryption Setting.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._put(
- f"/zones/{zone_id}/cache/origin_post_quantum_encryption",
- body=maybe_transform(
- {"value": value}, origin_post_quantum_encryption_update_params.OriginPostQuantumEncryptionUpdateParams
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginPostQuantumEncryptionUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginPostQuantumEncryptionUpdateResponse]],
- ResultWrapper[OriginPostQuantumEncryptionUpdateResponse],
- ),
- )
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[OriginPostQuantumEncryptionGetResponse]:
- """
- Instructs Cloudflare to use Post-Quantum (PQ) key agreement algorithms when
- connecting to your origin. Preferred instructs Cloudflare to opportunistically
- send a Post-Quantum keyshare in the first message to the origin (for fastest
- connections when the origin supports and prefers PQ), supported means that PQ
- algorithms are advertised but only used when requested by the origin, and off
- means that PQ algorithms are not advertised.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/cache/origin_post_quantum_encryption",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginPostQuantumEncryptionGetResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginPostQuantumEncryptionGetResponse]],
- ResultWrapper[OriginPostQuantumEncryptionGetResponse],
- ),
- )
-
-
-class AsyncOriginPostQuantumEncryptionResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncOriginPostQuantumEncryptionResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncOriginPostQuantumEncryptionResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncOriginPostQuantumEncryptionResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncOriginPostQuantumEncryptionResourceWithStreamingResponse(self)
-
- async def update(
- self,
- *,
- zone_id: str,
- value: Literal["preferred", "supported", "off"],
- # 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,
- ) -> Optional[OriginPostQuantumEncryptionUpdateResponse]:
- """
- Instructs Cloudflare to use Post-Quantum (PQ) key agreement algorithms when
- connecting to your origin. Preferred instructs Cloudflare to opportunistically
- send a Post-Quantum keyshare in the first message to the origin (for fastest
- connections when the origin supports and prefers PQ), supported means that PQ
- algorithms are advertised but only used when requested by the origin, and off
- means that PQ algorithms are not advertised.
-
- Args:
- zone_id: Identifier.
-
- value: Value of the Origin Post Quantum Encryption Setting.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._put(
- f"/zones/{zone_id}/cache/origin_post_quantum_encryption",
- body=await async_maybe_transform(
- {"value": value}, origin_post_quantum_encryption_update_params.OriginPostQuantumEncryptionUpdateParams
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginPostQuantumEncryptionUpdateResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginPostQuantumEncryptionUpdateResponse]],
- ResultWrapper[OriginPostQuantumEncryptionUpdateResponse],
- ),
- )
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[OriginPostQuantumEncryptionGetResponse]:
- """
- Instructs Cloudflare to use Post-Quantum (PQ) key agreement algorithms when
- connecting to your origin. Preferred instructs Cloudflare to opportunistically
- send a Post-Quantum keyshare in the first message to the origin (for fastest
- connections when the origin supports and prefers PQ), supported means that PQ
- algorithms are advertised but only used when requested by the origin, and off
- means that PQ algorithms are not advertised.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/cache/origin_post_quantum_encryption",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[OriginPostQuantumEncryptionGetResponse]]._unwrapper,
- ),
- cast_to=cast(
- Type[Optional[OriginPostQuantumEncryptionGetResponse]],
- ResultWrapper[OriginPostQuantumEncryptionGetResponse],
- ),
- )
-
-
-class OriginPostQuantumEncryptionResourceWithRawResponse:
- def __init__(self, origin_post_quantum_encryption: OriginPostQuantumEncryptionResource) -> None:
- self._origin_post_quantum_encryption = origin_post_quantum_encryption
-
- self.update = to_raw_response_wrapper(
- origin_post_quantum_encryption.update,
- )
- self.get = to_raw_response_wrapper(
- origin_post_quantum_encryption.get,
- )
-
-
-class AsyncOriginPostQuantumEncryptionResourceWithRawResponse:
- def __init__(self, origin_post_quantum_encryption: AsyncOriginPostQuantumEncryptionResource) -> None:
- self._origin_post_quantum_encryption = origin_post_quantum_encryption
-
- self.update = async_to_raw_response_wrapper(
- origin_post_quantum_encryption.update,
- )
- self.get = async_to_raw_response_wrapper(
- origin_post_quantum_encryption.get,
- )
-
-
-class OriginPostQuantumEncryptionResourceWithStreamingResponse:
- def __init__(self, origin_post_quantum_encryption: OriginPostQuantumEncryptionResource) -> None:
- self._origin_post_quantum_encryption = origin_post_quantum_encryption
-
- self.update = to_streamed_response_wrapper(
- origin_post_quantum_encryption.update,
- )
- self.get = to_streamed_response_wrapper(
- origin_post_quantum_encryption.get,
- )
-
-
-class AsyncOriginPostQuantumEncryptionResourceWithStreamingResponse:
- def __init__(self, origin_post_quantum_encryption: AsyncOriginPostQuantumEncryptionResource) -> None:
- self._origin_post_quantum_encryption = origin_post_quantum_encryption
-
- self.update = async_to_streamed_response_wrapper(
- origin_post_quantum_encryption.update,
- )
- self.get = async_to_streamed_response_wrapper(
- origin_post_quantum_encryption.get,
- )
diff --git a/src/cloudflare/resources/page_rules.py b/src/cloudflare/resources/page_rules.py
deleted file mode 100644
index d687a14e8c0..00000000000
--- a/src/cloudflare/resources/page_rules.py
+++ /dev/null
@@ -1,883 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Iterable, Optional, cast
-from typing_extensions import Literal
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.page_rules import (
- page_rule_edit_params,
- page_rule_list_params,
- page_rule_create_params,
- page_rule_update_params,
-)
-from ..types.page_rules.page_rule import PageRule
-from ..types.page_rules.target_param import TargetParam
-from ..types.page_rules.page_rule_list_response import PageRuleListResponse
-from ..types.page_rules.page_rule_delete_response import PageRuleDeleteResponse
-
-__all__ = ["PageRulesResource", "AsyncPageRulesResource"]
-
-
-class PageRulesResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> PageRulesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return PageRulesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> PageRulesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return PageRulesResourceWithStreamingResponse(self)
-
- def create(
- self,
- *,
- zone_id: str,
- actions: Iterable[page_rule_create_params.Action],
- targets: Iterable[TargetParam],
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRule]:
- """
- Creates a new Page Rule.
-
- Args:
- zone_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- targets: The rule targets to evaluate on each request.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._post(
- f"/zones/{zone_id}/pagerules",
- body=maybe_transform(
- {
- "actions": actions,
- "targets": targets,
- "priority": priority,
- "status": status,
- },
- page_rule_create_params.PageRuleCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- def update(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- actions: Iterable[page_rule_update_params.Action],
- targets: Iterable[TargetParam],
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRule]:
- """Replaces the configuration of an existing Page Rule.
-
- The configuration of the
- updated Page Rule will exactly match the data passed in the API request.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- targets: The rule targets to evaluate on each request.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return self._put(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- body=maybe_transform(
- {
- "actions": actions,
- "targets": targets,
- "priority": priority,
- "status": status,
- },
- page_rule_update_params.PageRuleUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- def list(
- self,
- *,
- zone_id: str,
- direction: Literal["asc", "desc"] | Omit = omit,
- match: Literal["any", "all"] | Omit = omit,
- order: Literal["status", "priority"] | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRuleListResponse]:
- """
- Fetches Page Rules in a zone.
-
- Args:
- zone_id: Identifier.
-
- direction: The direction used to sort returned Page Rules.
-
- match: When set to `all`, all the search requirements must match. When set to `any`,
- only one of the search requirements has to match.
-
- order: The field used to sort returned Page Rules.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/pagerules",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "direction": direction,
- "match": match,
- "order": order,
- "status": status,
- },
- page_rule_list_params.PageRuleListParams,
- ),
- post_parser=ResultWrapper[Optional[PageRuleListResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRuleListResponse]], ResultWrapper[PageRuleListResponse]),
- )
-
- def delete(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[PageRuleDeleteResponse]:
- """
- Deletes an existing Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return self._delete(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRuleDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRuleDeleteResponse]], ResultWrapper[PageRuleDeleteResponse]),
- )
-
- def edit(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- actions: Iterable[page_rule_edit_params.Action] | Omit = omit,
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | Omit = omit,
- targets: Iterable[TargetParam] | 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,
- ) -> Optional[PageRule]:
- """
- Updates one or more fields of an existing Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- targets: The rule targets to evaluate on each request.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return self._patch(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- body=maybe_transform(
- {
- "actions": actions,
- "priority": priority,
- "status": status,
- "targets": targets,
- },
- page_rule_edit_params.PageRuleEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- def get(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[PageRule]:
- """
- Fetches the details of a Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return self._get(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
-
-class AsyncPageRulesResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncPageRulesResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncPageRulesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncPageRulesResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncPageRulesResourceWithStreamingResponse(self)
-
- async def create(
- self,
- *,
- zone_id: str,
- actions: Iterable[page_rule_create_params.Action],
- targets: Iterable[TargetParam],
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRule]:
- """
- Creates a new Page Rule.
-
- Args:
- zone_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- targets: The rule targets to evaluate on each request.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._post(
- f"/zones/{zone_id}/pagerules",
- body=await async_maybe_transform(
- {
- "actions": actions,
- "targets": targets,
- "priority": priority,
- "status": status,
- },
- page_rule_create_params.PageRuleCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- async def update(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- actions: Iterable[page_rule_update_params.Action],
- targets: Iterable[TargetParam],
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRule]:
- """Replaces the configuration of an existing Page Rule.
-
- The configuration of the
- updated Page Rule will exactly match the data passed in the API request.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- targets: The rule targets to evaluate on each request.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return await self._put(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- body=await async_maybe_transform(
- {
- "actions": actions,
- "targets": targets,
- "priority": priority,
- "status": status,
- },
- page_rule_update_params.PageRuleUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- async def list(
- self,
- *,
- zone_id: str,
- direction: Literal["asc", "desc"] | Omit = omit,
- match: Literal["any", "all"] | Omit = omit,
- order: Literal["status", "priority"] | Omit = omit,
- status: Literal["active", "disabled"] | 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,
- ) -> Optional[PageRuleListResponse]:
- """
- Fetches Page Rules in a zone.
-
- Args:
- zone_id: Identifier.
-
- direction: The direction used to sort returned Page Rules.
-
- match: When set to `all`, all the search requirements must match. When set to `any`,
- only one of the search requirements has to match.
-
- order: The field used to sort returned Page Rules.
-
- status: The status of the Page Rule.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/pagerules",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform(
- {
- "direction": direction,
- "match": match,
- "order": order,
- "status": status,
- },
- page_rule_list_params.PageRuleListParams,
- ),
- post_parser=ResultWrapper[Optional[PageRuleListResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRuleListResponse]], ResultWrapper[PageRuleListResponse]),
- )
-
- async def delete(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[PageRuleDeleteResponse]:
- """
- Deletes an existing Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return await self._delete(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRuleDeleteResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRuleDeleteResponse]], ResultWrapper[PageRuleDeleteResponse]),
- )
-
- async def edit(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- actions: Iterable[page_rule_edit_params.Action] | Omit = omit,
- priority: int | Omit = omit,
- status: Literal["active", "disabled"] | Omit = omit,
- targets: Iterable[TargetParam] | 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,
- ) -> Optional[PageRule]:
- """
- Updates one or more fields of an existing Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- actions: The set of actions to perform if the targets of this rule match the request.
- Actions can redirect to another URL or override settings, but not both.
-
- priority: The priority of the rule, used to define which Page Rule is processed over
- another. A higher number indicates a higher priority. For example, if you have a
- catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to
- take precedence (rule B: `/images/special/*`), specify a higher priority for
- rule B so it overrides rule A.
-
- status: The status of the Page Rule.
-
- targets: The rule targets to evaluate on each request.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return await self._patch(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- body=await async_maybe_transform(
- {
- "actions": actions,
- "priority": priority,
- "status": status,
- "targets": targets,
- },
- page_rule_edit_params.PageRuleEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
- async def get(
- self,
- pagerule_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[PageRule]:
- """
- Fetches the details of a Page Rule.
-
- Args:
- zone_id: Identifier.
-
- pagerule_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not pagerule_id:
- raise ValueError(f"Expected a non-empty value for `pagerule_id` but received {pagerule_id!r}")
- return await self._get(
- f"/zones/{zone_id}/pagerules/{pagerule_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[PageRule]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[PageRule]], ResultWrapper[PageRule]),
- )
-
-
-class PageRulesResourceWithRawResponse:
- def __init__(self, page_rules: PageRulesResource) -> None:
- self._page_rules = page_rules
-
- self.create = to_raw_response_wrapper(
- page_rules.create,
- )
- self.update = to_raw_response_wrapper(
- page_rules.update,
- )
- self.list = to_raw_response_wrapper(
- page_rules.list,
- )
- self.delete = to_raw_response_wrapper(
- page_rules.delete,
- )
- self.edit = to_raw_response_wrapper(
- page_rules.edit,
- )
- self.get = to_raw_response_wrapper(
- page_rules.get,
- )
-
-
-class AsyncPageRulesResourceWithRawResponse:
- def __init__(self, page_rules: AsyncPageRulesResource) -> None:
- self._page_rules = page_rules
-
- self.create = async_to_raw_response_wrapper(
- page_rules.create,
- )
- self.update = async_to_raw_response_wrapper(
- page_rules.update,
- )
- self.list = async_to_raw_response_wrapper(
- page_rules.list,
- )
- self.delete = async_to_raw_response_wrapper(
- page_rules.delete,
- )
- self.edit = async_to_raw_response_wrapper(
- page_rules.edit,
- )
- self.get = async_to_raw_response_wrapper(
- page_rules.get,
- )
-
-
-class PageRulesResourceWithStreamingResponse:
- def __init__(self, page_rules: PageRulesResource) -> None:
- self._page_rules = page_rules
-
- self.create = to_streamed_response_wrapper(
- page_rules.create,
- )
- self.update = to_streamed_response_wrapper(
- page_rules.update,
- )
- self.list = to_streamed_response_wrapper(
- page_rules.list,
- )
- self.delete = to_streamed_response_wrapper(
- page_rules.delete,
- )
- self.edit = to_streamed_response_wrapper(
- page_rules.edit,
- )
- self.get = to_streamed_response_wrapper(
- page_rules.get,
- )
-
-
-class AsyncPageRulesResourceWithStreamingResponse:
- def __init__(self, page_rules: AsyncPageRulesResource) -> None:
- self._page_rules = page_rules
-
- self.create = async_to_streamed_response_wrapper(
- page_rules.create,
- )
- self.update = async_to_streamed_response_wrapper(
- page_rules.update,
- )
- self.list = async_to_streamed_response_wrapper(
- page_rules.list,
- )
- self.delete = async_to_streamed_response_wrapper(
- page_rules.delete,
- )
- self.edit = async_to_streamed_response_wrapper(
- page_rules.edit,
- )
- self.get = async_to_streamed_response_wrapper(
- page_rules.get,
- )
diff --git a/src/cloudflare/resources/rate_limits.py b/src/cloudflare/resources/rate_limits.py
deleted file mode 100644
index 31110953cfa..00000000000
--- a/src/cloudflare/resources/rate_limits.py
+++ /dev/null
@@ -1,775 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import typing_extensions
-from typing import Type, cast
-
-import httpx
-
-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 .._wrappers import ResultWrapper
-from ..pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
-from .._base_client import AsyncPaginator, make_request_options
-from ..types.rate_limits import rate_limit_edit_params, rate_limit_list_params, rate_limit_create_params
-from ..types.rate_limits.rate_limit import RateLimit
-from ..types.rate_limits.rate_limit_delete_response import RateLimitDeleteResponse
-
-__all__ = ["RateLimitsResource", "AsyncRateLimitsResource"]
-
-
-class RateLimitsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> RateLimitsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return RateLimitsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> RateLimitsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return RateLimitsResourceWithStreamingResponse(self)
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def create(
- self,
- *,
- zone_id: str,
- action: rate_limit_create_params.Action,
- match: rate_limit_create_params.Match,
- period: float,
- threshold: float,
- # 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,
- ) -> RateLimit:
- """Creates a new rate limit for a zone.
-
- Refer to the object definition for a list
- of required attributes.
-
- Args:
- zone_id: Defines an identifier.
-
- action: The action to perform when the threshold of matched traffic within the
- configured period is exceeded.
-
- match: Determines which traffic the rate limit counts towards the threshold.
-
- period: The time in seconds (an integer value) to count matching traffic. If the count
- exceeds the configured threshold within this period, Cloudflare will perform the
- configured action.
-
- threshold: The threshold that will trigger the configured mitigation action. Configure this
- value along with the `period` property to establish a threshold per period.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._post(
- f"/zones/{zone_id}/rate_limits",
- body=maybe_transform(
- {
- "action": action,
- "match": match,
- "period": period,
- "threshold": threshold,
- },
- rate_limit_create_params.RateLimitCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def list(
- self,
- *,
- zone_id: str,
- page: float | Omit = omit,
- per_page: float | 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,
- ) -> SyncV4PagePaginationArray[RateLimit]:
- """
- Fetches the rate limits for a zone.
-
- Args:
- zone_id: Defines an identifier.
-
- page: Defines the page number of paginated results.
-
- per_page: Defines the maximum number of results per page. You can only set the value to
- `1` or to a multiple of 5 such as `5`, `10`, `15`, or `20`.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/rate_limits",
- page=SyncV4PagePaginationArray[RateLimit],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "page": page,
- "per_page": per_page,
- },
- rate_limit_list_params.RateLimitListParams,
- ),
- ),
- model=RateLimit,
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def delete(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> RateLimitDeleteResponse:
- """
- Deletes an existing rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return self._delete(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimitDeleteResponse]._unwrapper,
- ),
- cast_to=cast(Type[RateLimitDeleteResponse], ResultWrapper[RateLimitDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def edit(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- action: rate_limit_edit_params.Action,
- match: rate_limit_edit_params.Match,
- period: float,
- threshold: float,
- # 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,
- ) -> RateLimit:
- """
- Updates an existing rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- action: The action to perform when the threshold of matched traffic within the
- configured period is exceeded.
-
- match: Determines which traffic the rate limit counts towards the threshold.
-
- period: The time in seconds (an integer value) to count matching traffic. If the count
- exceeds the configured threshold within this period, Cloudflare will perform the
- configured action.
-
- threshold: The threshold that will trigger the configured mitigation action. Configure this
- value along with the `period` property to establish a threshold per period.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return self._put(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- body=maybe_transform(
- {
- "action": action,
- "match": match,
- "period": period,
- "threshold": threshold,
- },
- rate_limit_edit_params.RateLimitEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def get(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> RateLimit:
- """
- Fetches the details of a rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return self._get(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
-
-class AsyncRateLimitsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncRateLimitsResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncRateLimitsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncRateLimitsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncRateLimitsResourceWithStreamingResponse(self)
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- async def create(
- self,
- *,
- zone_id: str,
- action: rate_limit_create_params.Action,
- match: rate_limit_create_params.Match,
- period: float,
- threshold: float,
- # 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,
- ) -> RateLimit:
- """Creates a new rate limit for a zone.
-
- Refer to the object definition for a list
- of required attributes.
-
- Args:
- zone_id: Defines an identifier.
-
- action: The action to perform when the threshold of matched traffic within the
- configured period is exceeded.
-
- match: Determines which traffic the rate limit counts towards the threshold.
-
- period: The time in seconds (an integer value) to count matching traffic. If the count
- exceeds the configured threshold within this period, Cloudflare will perform the
- configured action.
-
- threshold: The threshold that will trigger the configured mitigation action. Configure this
- value along with the `period` property to establish a threshold per period.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._post(
- f"/zones/{zone_id}/rate_limits",
- body=await async_maybe_transform(
- {
- "action": action,
- "match": match,
- "period": period,
- "threshold": threshold,
- },
- rate_limit_create_params.RateLimitCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- def list(
- self,
- *,
- zone_id: str,
- page: float | Omit = omit,
- per_page: float | 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,
- ) -> AsyncPaginator[RateLimit, AsyncV4PagePaginationArray[RateLimit]]:
- """
- Fetches the rate limits for a zone.
-
- Args:
- zone_id: Defines an identifier.
-
- page: Defines the page number of paginated results.
-
- per_page: Defines the maximum number of results per page. You can only set the value to
- `1` or to a multiple of 5 such as `5`, `10`, `15`, or `20`.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get_api_list(
- f"/zones/{zone_id}/rate_limits",
- page=AsyncV4PagePaginationArray[RateLimit],
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "page": page,
- "per_page": per_page,
- },
- rate_limit_list_params.RateLimitListParams,
- ),
- ),
- model=RateLimit,
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- async def delete(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> RateLimitDeleteResponse:
- """
- Deletes an existing rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return await self._delete(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimitDeleteResponse]._unwrapper,
- ),
- cast_to=cast(Type[RateLimitDeleteResponse], ResultWrapper[RateLimitDeleteResponse]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- async def edit(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- action: rate_limit_edit_params.Action,
- match: rate_limit_edit_params.Match,
- period: float,
- threshold: float,
- # 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,
- ) -> RateLimit:
- """
- Updates an existing rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- action: The action to perform when the threshold of matched traffic within the
- configured period is exceeded.
-
- match: Determines which traffic the rate limit counts towards the threshold.
-
- period: The time in seconds (an integer value) to count matching traffic. If the count
- exceeds the configured threshold within this period, Cloudflare will perform the
- configured action.
-
- threshold: The threshold that will trigger the configured mitigation action. Configure this
- value along with the `period` property to establish a threshold per period.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return await self._put(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- body=await async_maybe_transform(
- {
- "action": action,
- "match": match,
- "period": period,
- "threshold": threshold,
- },
- rate_limit_edit_params.RateLimitEditParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
- @typing_extensions.deprecated(
- "Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details."
- )
- async def get(
- self,
- rate_limit_id: str,
- *,
- zone_id: str,
- # 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,
- ) -> RateLimit:
- """
- Fetches the details of a rate limit.
-
- Args:
- zone_id: Defines an identifier.
-
- rate_limit_id: Defines the unique identifier of the rate limit.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- if not rate_limit_id:
- raise ValueError(f"Expected a non-empty value for `rate_limit_id` but received {rate_limit_id!r}")
- return await self._get(
- f"/zones/{zone_id}/rate_limits/{rate_limit_id}",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[RateLimit]._unwrapper,
- ),
- cast_to=cast(Type[RateLimit], ResultWrapper[RateLimit]),
- )
-
-
-class RateLimitsResourceWithRawResponse:
- def __init__(self, rate_limits: RateLimitsResource) -> None:
- self._rate_limits = rate_limits
-
- self.create = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- rate_limits.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- rate_limits.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- rate_limits.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.edit = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- rate_limits.edit, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- to_raw_response_wrapper(
- rate_limits.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class AsyncRateLimitsResourceWithRawResponse:
- def __init__(self, rate_limits: AsyncRateLimitsResource) -> None:
- self._rate_limits = rate_limits
-
- self.create = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- rate_limits.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- rate_limits.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- rate_limits.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.edit = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- rate_limits.edit, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- async_to_raw_response_wrapper(
- rate_limits.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class RateLimitsResourceWithStreamingResponse:
- def __init__(self, rate_limits: RateLimitsResource) -> None:
- self._rate_limits = rate_limits
-
- self.create = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- rate_limits.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- rate_limits.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- rate_limits.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.edit = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- rate_limits.edit, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- to_streamed_response_wrapper(
- rate_limits.get, # pyright: ignore[reportDeprecated],
- )
- )
-
-
-class AsyncRateLimitsResourceWithStreamingResponse:
- def __init__(self, rate_limits: AsyncRateLimitsResource) -> None:
- self._rate_limits = rate_limits
-
- self.create = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- rate_limits.create, # pyright: ignore[reportDeprecated],
- )
- )
- self.list = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- rate_limits.list, # pyright: ignore[reportDeprecated],
- )
- )
- self.delete = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- rate_limits.delete, # pyright: ignore[reportDeprecated],
- )
- )
- self.edit = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- rate_limits.edit, # pyright: ignore[reportDeprecated],
- )
- )
- self.get = ( # pyright: ignore[reportDeprecated]
- async_to_streamed_response_wrapper(
- rate_limits.get, # pyright: ignore[reportDeprecated],
- )
- )
diff --git a/src/cloudflare/resources/security_txt.py b/src/cloudflare/resources/security_txt.py
deleted file mode 100644
index 21df4368570..00000000000
--- a/src/cloudflare/resources/security_txt.py
+++ /dev/null
@@ -1,401 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, Union, Optional, cast
-from datetime import datetime
-
-import httpx
-
-from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, 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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.security_txt import security_txt_update_params
-from ..types.security_txt.security_txt_get_response import SecurityTXTGetResponse
-from ..types.security_txt.security_txt_delete_response import SecurityTXTDeleteResponse
-from ..types.security_txt.security_txt_update_response import SecurityTXTUpdateResponse
-
-__all__ = ["SecurityTXTResource", "AsyncSecurityTXTResource"]
-
-
-class SecurityTXTResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> SecurityTXTResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return SecurityTXTResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> SecurityTXTResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return SecurityTXTResourceWithStreamingResponse(self)
-
- def update(
- self,
- *,
- zone_id: str,
- acknowledgments: SequenceNotStr[str] | Omit = omit,
- canonical: SequenceNotStr[str] | Omit = omit,
- contact: SequenceNotStr[str] | Omit = omit,
- enabled: bool | Omit = omit,
- encryption: SequenceNotStr[str] | Omit = omit,
- expires: Union[str, datetime] | Omit = omit,
- hiring: SequenceNotStr[str] | Omit = omit,
- policy: SequenceNotStr[str] | Omit = omit,
- preferred_languages: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> SecurityTXTUpdateResponse:
- """
- Updates the security.txt file configuration for a zone, which provides security
- researchers with vulnerability reporting information.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._put(
- f"/zones/{zone_id}/security-center/securitytxt",
- body=maybe_transform(
- {
- "acknowledgments": acknowledgments,
- "canonical": canonical,
- "contact": contact,
- "enabled": enabled,
- "encryption": encryption,
- "expires": expires,
- "hiring": hiring,
- "policy": policy,
- "preferred_languages": preferred_languages,
- },
- security_txt_update_params.SecurityTXTUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=SecurityTXTUpdateResponse,
- )
-
- def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> SecurityTXTDeleteResponse:
- """Removes the security.txt file configuration for a zone.
-
- The
- /.well-known/security.txt endpoint will no longer be served.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._delete(
- f"/zones/{zone_id}/security-center/securitytxt",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=SecurityTXTDeleteResponse,
- )
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[SecurityTXTGetResponse]:
- """
- Retrieves the current security.txt file configuration for a zone, used for
- security vulnerability reporting.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/security-center/securitytxt",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[SecurityTXTGetResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[SecurityTXTGetResponse]], ResultWrapper[SecurityTXTGetResponse]),
- )
-
-
-class AsyncSecurityTXTResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncSecurityTXTResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncSecurityTXTResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncSecurityTXTResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncSecurityTXTResourceWithStreamingResponse(self)
-
- async def update(
- self,
- *,
- zone_id: str,
- acknowledgments: SequenceNotStr[str] | Omit = omit,
- canonical: SequenceNotStr[str] | Omit = omit,
- contact: SequenceNotStr[str] | Omit = omit,
- enabled: bool | Omit = omit,
- encryption: SequenceNotStr[str] | Omit = omit,
- expires: Union[str, datetime] | Omit = omit,
- hiring: SequenceNotStr[str] | Omit = omit,
- policy: SequenceNotStr[str] | Omit = omit,
- preferred_languages: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> SecurityTXTUpdateResponse:
- """
- Updates the security.txt file configuration for a zone, which provides security
- researchers with vulnerability reporting information.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._put(
- f"/zones/{zone_id}/security-center/securitytxt",
- body=await async_maybe_transform(
- {
- "acknowledgments": acknowledgments,
- "canonical": canonical,
- "contact": contact,
- "enabled": enabled,
- "encryption": encryption,
- "expires": expires,
- "hiring": hiring,
- "policy": policy,
- "preferred_languages": preferred_languages,
- },
- security_txt_update_params.SecurityTXTUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=SecurityTXTUpdateResponse,
- )
-
- async def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> SecurityTXTDeleteResponse:
- """Removes the security.txt file configuration for a zone.
-
- The
- /.well-known/security.txt endpoint will no longer be served.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._delete(
- f"/zones/{zone_id}/security-center/securitytxt",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=SecurityTXTDeleteResponse,
- )
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> Optional[SecurityTXTGetResponse]:
- """
- Retrieves the current security.txt file configuration for a zone, used for
- security vulnerability reporting.
-
- Args:
- zone_id: Identifier.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/security-center/securitytxt",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[Optional[SecurityTXTGetResponse]]._unwrapper,
- ),
- cast_to=cast(Type[Optional[SecurityTXTGetResponse]], ResultWrapper[SecurityTXTGetResponse]),
- )
-
-
-class SecurityTXTResourceWithRawResponse:
- def __init__(self, security_txt: SecurityTXTResource) -> None:
- self._security_txt = security_txt
-
- self.update = to_raw_response_wrapper(
- security_txt.update,
- )
- self.delete = to_raw_response_wrapper(
- security_txt.delete,
- )
- self.get = to_raw_response_wrapper(
- security_txt.get,
- )
-
-
-class AsyncSecurityTXTResourceWithRawResponse:
- def __init__(self, security_txt: AsyncSecurityTXTResource) -> None:
- self._security_txt = security_txt
-
- self.update = async_to_raw_response_wrapper(
- security_txt.update,
- )
- self.delete = async_to_raw_response_wrapper(
- security_txt.delete,
- )
- self.get = async_to_raw_response_wrapper(
- security_txt.get,
- )
-
-
-class SecurityTXTResourceWithStreamingResponse:
- def __init__(self, security_txt: SecurityTXTResource) -> None:
- self._security_txt = security_txt
-
- self.update = to_streamed_response_wrapper(
- security_txt.update,
- )
- self.delete = to_streamed_response_wrapper(
- security_txt.delete,
- )
- self.get = to_streamed_response_wrapper(
- security_txt.get,
- )
-
-
-class AsyncSecurityTXTResourceWithStreamingResponse:
- def __init__(self, security_txt: AsyncSecurityTXTResource) -> None:
- self._security_txt = security_txt
-
- self.update = async_to_streamed_response_wrapper(
- security_txt.update,
- )
- self.delete = async_to_streamed_response_wrapper(
- security_txt.delete,
- )
- self.get = async_to_streamed_response_wrapper(
- security_txt.get,
- )
diff --git a/src/cloudflare/resources/url_normalization.py b/src/cloudflare/resources/url_normalization.py
deleted file mode 100644
index 2d69292f055..00000000000
--- a/src/cloudflare/resources/url_normalization.py
+++ /dev/null
@@ -1,382 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Type, cast
-from typing_extensions import Literal
-
-import httpx
-
-from .._types import Body, Query, Headers, NoneType, NotGiven, 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 .._wrappers import ResultWrapper
-from .._base_client import make_request_options
-from ..types.url_normalization import url_normalization_update_params
-from ..types.url_normalization.url_normalization_get_response import URLNormalizationGetResponse
-from ..types.url_normalization.url_normalization_update_response import URLNormalizationUpdateResponse
-
-__all__ = ["URLNormalizationResource", "AsyncURLNormalizationResource"]
-
-
-class URLNormalizationResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> URLNormalizationResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return URLNormalizationResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> URLNormalizationResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return URLNormalizationResourceWithStreamingResponse(self)
-
- def update(
- self,
- *,
- zone_id: str,
- scope: Literal["incoming", "both", "none"],
- type: Literal["cloudflare", "rfc3986"],
- # 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,
- ) -> URLNormalizationUpdateResponse:
- """
- Updates the URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- scope: The scope of the URL normalization.
-
- type: The type of URL normalization performed by Cloudflare.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._put(
- f"/zones/{zone_id}/url_normalization",
- body=maybe_transform(
- {
- "scope": scope,
- "type": type,
- },
- url_normalization_update_params.URLNormalizationUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[URLNormalizationUpdateResponse]._unwrapper,
- ),
- cast_to=cast(Type[URLNormalizationUpdateResponse], ResultWrapper[URLNormalizationUpdateResponse]),
- )
-
- def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> None:
- """
- Deletes the URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- extra_headers = {"Accept": "*/*", **(extra_headers or {})}
- return self._delete(
- f"/zones/{zone_id}/url_normalization",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=NoneType,
- )
-
- def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> URLNormalizationGetResponse:
- """
- Fetches the current URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return self._get(
- f"/zones/{zone_id}/url_normalization",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[URLNormalizationGetResponse]._unwrapper,
- ),
- cast_to=cast(Type[URLNormalizationGetResponse], ResultWrapper[URLNormalizationGetResponse]),
- )
-
-
-class AsyncURLNormalizationResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncURLNormalizationResourceWithRawResponse:
- """
- 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/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
- """
- return AsyncURLNormalizationResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncURLNormalizationResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
- """
- return AsyncURLNormalizationResourceWithStreamingResponse(self)
-
- async def update(
- self,
- *,
- zone_id: str,
- scope: Literal["incoming", "both", "none"],
- type: Literal["cloudflare", "rfc3986"],
- # 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,
- ) -> URLNormalizationUpdateResponse:
- """
- Updates the URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- scope: The scope of the URL normalization.
-
- type: The type of URL normalization performed by Cloudflare.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._put(
- f"/zones/{zone_id}/url_normalization",
- body=await async_maybe_transform(
- {
- "scope": scope,
- "type": type,
- },
- url_normalization_update_params.URLNormalizationUpdateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[URLNormalizationUpdateResponse]._unwrapper,
- ),
- cast_to=cast(Type[URLNormalizationUpdateResponse], ResultWrapper[URLNormalizationUpdateResponse]),
- )
-
- async def delete(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> None:
- """
- Deletes the URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- extra_headers = {"Accept": "*/*", **(extra_headers or {})}
- return await self._delete(
- f"/zones/{zone_id}/url_normalization",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=NoneType,
- )
-
- async def get(
- self,
- *,
- zone_id: str,
- # 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,
- ) -> URLNormalizationGetResponse:
- """
- Fetches the current URL Normalization settings.
-
- Args:
- zone_id: The unique ID of the zone.
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- if not zone_id:
- raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}")
- return await self._get(
- f"/zones/{zone_id}/url_normalization",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[URLNormalizationGetResponse]._unwrapper,
- ),
- cast_to=cast(Type[URLNormalizationGetResponse], ResultWrapper[URLNormalizationGetResponse]),
- )
-
-
-class URLNormalizationResourceWithRawResponse:
- def __init__(self, url_normalization: URLNormalizationResource) -> None:
- self._url_normalization = url_normalization
-
- self.update = to_raw_response_wrapper(
- url_normalization.update,
- )
- self.delete = to_raw_response_wrapper(
- url_normalization.delete,
- )
- self.get = to_raw_response_wrapper(
- url_normalization.get,
- )
-
-
-class AsyncURLNormalizationResourceWithRawResponse:
- def __init__(self, url_normalization: AsyncURLNormalizationResource) -> None:
- self._url_normalization = url_normalization
-
- self.update = async_to_raw_response_wrapper(
- url_normalization.update,
- )
- self.delete = async_to_raw_response_wrapper(
- url_normalization.delete,
- )
- self.get = async_to_raw_response_wrapper(
- url_normalization.get,
- )
-
-
-class URLNormalizationResourceWithStreamingResponse:
- def __init__(self, url_normalization: URLNormalizationResource) -> None:
- self._url_normalization = url_normalization
-
- self.update = to_streamed_response_wrapper(
- url_normalization.update,
- )
- self.delete = to_streamed_response_wrapper(
- url_normalization.delete,
- )
- self.get = to_streamed_response_wrapper(
- url_normalization.get,
- )
-
-
-class AsyncURLNormalizationResourceWithStreamingResponse:
- def __init__(self, url_normalization: AsyncURLNormalizationResource) -> None:
- self._url_normalization = url_normalization
-
- self.update = async_to_streamed_response_wrapper(
- url_normalization.update,
- )
- self.delete = async_to_streamed_response_wrapper(
- url_normalization.delete,
- )
- self.get = async_to_streamed_response_wrapper(
- url_normalization.get,
- )
diff --git a/src/cloudflare/resources/workflows/instances/status.py b/src/cloudflare/resources/workflows/instances/status.py
index eb3b52525f0..fb2f7515979 100644
--- a/src/cloudflare/resources/workflows/instances/status.py
+++ b/src/cloudflare/resources/workflows/instances/status.py
@@ -7,7 +7,7 @@
import httpx
-from ...._types import Body, Query, Headers, NotGiven, not_given
+from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
from ...._utils import path_template, maybe_transform, async_maybe_transform
from ...._compat import cached_property
from ...._resource import SyncAPIResource, AsyncAPIResource
@@ -52,6 +52,7 @@ def edit(
account_id: str | None = None,
workflow_name: str,
status: Literal["resume", "pause", "terminate", "restart"],
+ from_: status_edit_params.From | 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,
@@ -66,6 +67,8 @@ def edit(
Args:
status: Apply action to instance.
+ from_: Step to restart from. Only applicable when status is "restart".
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -89,7 +92,13 @@ def edit(
workflow_name=workflow_name,
instance_id=instance_id,
),
- body=maybe_transform({"status": status}, status_edit_params.StatusEditParams),
+ body=maybe_transform(
+ {
+ "status": status,
+ "from_": from_,
+ },
+ status_edit_params.StatusEditParams,
+ ),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -128,6 +137,7 @@ async def edit(
account_id: str | None = None,
workflow_name: str,
status: Literal["resume", "pause", "terminate", "restart"],
+ from_: status_edit_params.From | 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,
@@ -142,6 +152,8 @@ async def edit(
Args:
status: Apply action to instance.
+ from_: Step to restart from. Only applicable when status is "restart".
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -165,7 +177,13 @@ async def edit(
workflow_name=workflow_name,
instance_id=instance_id,
),
- body=await async_maybe_transform({"status": status}, status_edit_params.StatusEditParams),
+ body=await async_maybe_transform(
+ {
+ "status": status,
+ "from_": from_,
+ },
+ status_edit_params.StatusEditParams,
+ ),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
diff --git a/src/cloudflare/resources/zero_trust/gateway/lists/lists.py b/src/cloudflare/resources/zero_trust/gateway/lists/lists.py
index 4706f33c4c6..a141a7ef1a3 100644
--- a/src/cloudflare/resources/zero_trust/gateway/lists/lists.py
+++ b/src/cloudflare/resources/zero_trust/gateway/lists/lists.py
@@ -64,7 +64,7 @@ def create(
*,
account_id: str | None = None,
name: str,
- type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"],
+ type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"],
description: str | Omit = omit,
items: Iterable[list_create_params.Item] | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -186,7 +186,8 @@ def list(
self,
*,
account_id: str | None = None,
- type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"] | Omit = omit,
+ type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]
+ | 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,
@@ -400,7 +401,7 @@ async def create(
*,
account_id: str | None = None,
name: str,
- type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"],
+ type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"],
description: str | Omit = omit,
items: Iterable[list_create_params.Item] | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -522,7 +523,8 @@ def list(
self,
*,
account_id: str | None = None,
- type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"] | Omit = omit,
+ type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]
+ | 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,
diff --git a/src/cloudflare/types/brand_protection/v2/match_get_params.py b/src/cloudflare/types/brand_protection/v2/match_get_params.py
index 1d4b394a83a..78077125054 100644
--- a/src/cloudflare/types/brand_protection/v2/match_get_params.py
+++ b/src/cloudflare/types/brand_protection/v2/match_get_params.py
@@ -17,7 +17,8 @@ class MatchGetParams(TypedDict, total=False):
"""Query ID or comma-separated list of Query IDs.
When multiple IDs are provided, matches are deduplicated across queries and each
- match includes matched_queries and match_ids arrays.
+ match includes a match_details array with per-match query metadata and dismissed
+ state.
"""
domain_search: str
diff --git a/src/cloudflare/types/brand_protection/v2/match_get_response.py b/src/cloudflare/types/brand_protection/v2/match_get_response.py
index 92a21ab44b0..dec16b4c07e 100644
--- a/src/cloudflare/types/brand_protection/v2/match_get_response.py
+++ b/src/cloudflare/types/brand_protection/v2/match_get_response.py
@@ -4,16 +4,26 @@
from ...._models import BaseModel
-__all__ = ["MatchGetResponse", "Match", "MatchPublicScans"]
+__all__ = ["MatchGetResponse", "Match", "MatchPublicScans", "MatchMatchDetail"]
class MatchPublicScans(BaseModel):
submission_id: str
-class Match(BaseModel):
+class MatchMatchDetail(BaseModel):
dismissed: bool
+ """Individual dismissed state for this specific match."""
+
+ match_id: int
+
+ query_id: int
+
+ query_tag: Optional[str] = None
+ """Tag associated with the query, if one exists."""
+
+class Match(BaseModel):
domain: str
first_seen: str
@@ -28,14 +38,15 @@ class Match(BaseModel):
source: Optional[str] = None
- match_ids: Optional[List[int]] = None
- """All underlying match row IDs for this domain.
+ dismissed: Optional[bool] = None
+ """Whether the match is dismissed.
- Only present when multiple query_ids are requested.
+ Only present for single-query requests. For multi-query requests, use the
+ dismissed field in each match_details entry.
"""
- matched_queries: Optional[List[int]] = None
- """List of query IDs that produced this match.
+ match_details: Optional[List[MatchMatchDetail]] = None
+ """Per-match detail objects with query metadata and individual dismissed state.
Only present when multiple query_ids are requested.
"""
diff --git a/src/cloudflare/types/cache/__init__.py b/src/cloudflare/types/cache/__init__.py
index 10937a5c1b3..a8c1ab90c62 100644
--- a/src/cloudflare/types/cache/__init__.py
+++ b/src/cloudflare/types/cache/__init__.py
@@ -6,6 +6,7 @@
from .cache_reserve import CacheReserve as CacheReserve
from .cache_purge_params import CachePurgeParams as CachePurgeParams
from .cache_reserve_clear import CacheReserveClear as CacheReserveClear
+from .origin_cloud_region import OriginCloudRegion as OriginCloudRegion
from .variant_edit_params import VariantEditParams as VariantEditParams
from .cache_purge_response import CachePurgeResponse as CachePurgeResponse
from .variant_get_response import VariantGetResponse as VariantGetResponse
@@ -19,9 +20,26 @@
from .cache_reserve_clear_response import CacheReserveClearResponse as CacheReserveClearResponse
from .cache_reserve_status_response import CacheReserveStatusResponse as CacheReserveStatusResponse
from .smart_tiered_cache_edit_params import SmartTieredCacheEditParams as SmartTieredCacheEditParams
+from .origin_cloud_region_edit_params import OriginCloudRegionEditParams as OriginCloudRegionEditParams
from .smart_tiered_cache_get_response import SmartTieredCacheGetResponse as SmartTieredCacheGetResponse
+from .origin_cloud_region_get_response import OriginCloudRegionGetResponse as OriginCloudRegionGetResponse
from .smart_tiered_cache_edit_response import SmartTieredCacheEditResponse as SmartTieredCacheEditResponse
+from .origin_cloud_region_create_params import OriginCloudRegionCreateParams as OriginCloudRegionCreateParams
+from .origin_cloud_region_edit_response import OriginCloudRegionEditResponse as OriginCloudRegionEditResponse
+from .origin_cloud_region_list_response import OriginCloudRegionListResponse as OriginCloudRegionListResponse
from .regional_tiered_cache_edit_params import RegionalTieredCacheEditParams as RegionalTieredCacheEditParams
from .regional_tiered_cache_get_response import RegionalTieredCacheGetResponse as RegionalTieredCacheGetResponse
from .smart_tiered_cache_delete_response import SmartTieredCacheDeleteResponse as SmartTieredCacheDeleteResponse
+from .origin_cloud_region_create_response import OriginCloudRegionCreateResponse as OriginCloudRegionCreateResponse
+from .origin_cloud_region_delete_response import OriginCloudRegionDeleteResponse as OriginCloudRegionDeleteResponse
from .regional_tiered_cache_edit_response import RegionalTieredCacheEditResponse as RegionalTieredCacheEditResponse
+from .origin_cloud_region_bulk_edit_params import OriginCloudRegionBulkEditParams as OriginCloudRegionBulkEditParams
+from .origin_cloud_region_bulk_edit_response import (
+ OriginCloudRegionBulkEditResponse as OriginCloudRegionBulkEditResponse,
+)
+from .origin_cloud_region_bulk_delete_response import (
+ OriginCloudRegionBulkDeleteResponse as OriginCloudRegionBulkDeleteResponse,
+)
+from .origin_cloud_region_supported_regions_response import (
+ OriginCloudRegionSupportedRegionsResponse as OriginCloudRegionSupportedRegionsResponse,
+)
diff --git a/src/cloudflare/types/cache/origin_cloud_region.py b/src/cloudflare/types/cache/origin_cloud_region.py
new file mode 100644
index 00000000000..54afe283353
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region.py
@@ -0,0 +1,27 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from pydantic import Field as FieldInfo
+
+from ..._models import BaseModel
+
+__all__ = ["OriginCloudRegion"]
+
+
+class OriginCloudRegion(BaseModel):
+ """A single origin IP-to-cloud-region mapping."""
+
+ origin_ip: str = FieldInfo(alias="origin-ip")
+ """The origin IP address (IPv4 or IPv6, canonicalized)."""
+
+ region: str
+ """Cloud vendor region identifier."""
+
+ vendor: Literal["aws", "azure", "gcp", "oci"]
+ """Cloud vendor hosting the origin."""
+
+ modified_on: Optional[datetime] = None
+ """Time this mapping was last modified."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_bulk_delete_response.py b/src/cloudflare/types/cache/origin_cloud_region_bulk_delete_response.py
new file mode 100644
index 00000000000..d5ea3f1b7d1
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_bulk_delete_response.py
@@ -0,0 +1,74 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from pydantic import Field as FieldInfo
+
+from ..._models import BaseModel
+
+__all__ = ["OriginCloudRegionBulkDeleteResponse", "Value", "ValueFailed", "ValueSucceeded"]
+
+
+class ValueFailed(BaseModel):
+ """Result for a single item in a batch operation."""
+
+ origin_ip: str = FieldInfo(alias="origin-ip")
+ """The origin IP address for this item."""
+
+ error: Optional[str] = None
+ """Error message explaining why the item failed. Present only on failed items."""
+
+ region: Optional[str] = None
+ """Cloud vendor region identifier.
+
+ Present on succeeded items for patch operations.
+ """
+
+ vendor: Optional[str] = None
+ """Cloud vendor identifier. Present on succeeded items for patch operations."""
+
+
+class ValueSucceeded(BaseModel):
+ """Result for a single item in a batch operation."""
+
+ origin_ip: str = FieldInfo(alias="origin-ip")
+ """The origin IP address for this item."""
+
+ error: Optional[str] = None
+ """Error message explaining why the item failed. Present only on failed items."""
+
+ region: Optional[str] = None
+ """Cloud vendor region identifier.
+
+ Present on succeeded items for patch operations.
+ """
+
+ vendor: Optional[str] = None
+ """Cloud vendor identifier. Present on succeeded items for patch operations."""
+
+
+class Value(BaseModel):
+ failed: List[ValueFailed]
+ """Items that could not be applied, with error details."""
+
+ succeeded: List[ValueSucceeded]
+ """Items that were successfully applied."""
+
+
+class OriginCloudRegionBulkDeleteResponse(BaseModel):
+ """Response result for a batch origin cloud region operation."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: Value
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping set was last modified.
+
+ Null when no items were successfully applied.
+ """
diff --git a/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_params.py b/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_params.py
new file mode 100644
index 00000000000..b3e1d73819a
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_params.py
@@ -0,0 +1,35 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Iterable
+from typing_extensions import Literal, Required, TypedDict
+
+__all__ = ["OriginCloudRegionBulkEditParams", "Body"]
+
+
+class OriginCloudRegionBulkEditParams(TypedDict, total=False):
+ zone_id: str
+ """Identifier."""
+
+ body: Required[Iterable[Body]]
+
+
+class Body(TypedDict, total=False):
+ """Request body for creating or updating an origin cloud region mapping."""
+
+ ip: Required[str]
+ """Origin IP address (IPv4 or IPv6).
+
+ Normalized to canonical form before storage (RFC 5952 for IPv6).
+ """
+
+ region: Required[str]
+ """Cloud vendor region identifier.
+
+ Must be a valid region for the specified vendor as returned by the
+ supported_regions endpoint.
+ """
+
+ vendor: Required[Literal["aws", "azure", "gcp", "oci"]]
+ """Cloud vendor hosting the origin. Must be one of the supported vendors."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_response.py b/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_response.py
new file mode 100644
index 00000000000..097de32e532
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_bulk_edit_response.py
@@ -0,0 +1,74 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from pydantic import Field as FieldInfo
+
+from ..._models import BaseModel
+
+__all__ = ["OriginCloudRegionBulkEditResponse", "Value", "ValueFailed", "ValueSucceeded"]
+
+
+class ValueFailed(BaseModel):
+ """Result for a single item in a batch operation."""
+
+ origin_ip: str = FieldInfo(alias="origin-ip")
+ """The origin IP address for this item."""
+
+ error: Optional[str] = None
+ """Error message explaining why the item failed. Present only on failed items."""
+
+ region: Optional[str] = None
+ """Cloud vendor region identifier.
+
+ Present on succeeded items for patch operations.
+ """
+
+ vendor: Optional[str] = None
+ """Cloud vendor identifier. Present on succeeded items for patch operations."""
+
+
+class ValueSucceeded(BaseModel):
+ """Result for a single item in a batch operation."""
+
+ origin_ip: str = FieldInfo(alias="origin-ip")
+ """The origin IP address for this item."""
+
+ error: Optional[str] = None
+ """Error message explaining why the item failed. Present only on failed items."""
+
+ region: Optional[str] = None
+ """Cloud vendor region identifier.
+
+ Present on succeeded items for patch operations.
+ """
+
+ vendor: Optional[str] = None
+ """Cloud vendor identifier. Present on succeeded items for patch operations."""
+
+
+class Value(BaseModel):
+ failed: List[ValueFailed]
+ """Items that could not be applied, with error details."""
+
+ succeeded: List[ValueSucceeded]
+ """Items that were successfully applied."""
+
+
+class OriginCloudRegionBulkEditResponse(BaseModel):
+ """Response result for a batch origin cloud region operation."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: Value
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping set was last modified.
+
+ Null when no items were successfully applied.
+ """
diff --git a/src/cloudflare/types/cache/origin_cloud_region_create_params.py b/src/cloudflare/types/cache/origin_cloud_region_create_params.py
new file mode 100644
index 00000000000..7ab14711332
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_create_params.py
@@ -0,0 +1,28 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal, Required, TypedDict
+
+__all__ = ["OriginCloudRegionCreateParams"]
+
+
+class OriginCloudRegionCreateParams(TypedDict, total=False):
+ zone_id: str
+ """Identifier."""
+
+ ip: Required[str]
+ """Origin IP address (IPv4 or IPv6).
+
+ Normalized to canonical form before storage (RFC 5952 for IPv6).
+ """
+
+ region: Required[str]
+ """Cloud vendor region identifier.
+
+ Must be a valid region for the specified vendor as returned by the
+ supported_regions endpoint.
+ """
+
+ vendor: Required[Literal["aws", "azure", "gcp", "oci"]]
+ """Cloud vendor hosting the origin. Must be one of the supported vendors."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_create_response.py b/src/cloudflare/types/cache/origin_cloud_region_create_response.py
new file mode 100644
index 00000000000..370d4051a68
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_create_response.py
@@ -0,0 +1,25 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+from .origin_cloud_region import OriginCloudRegion
+
+__all__ = ["OriginCloudRegionCreateResponse"]
+
+
+class OriginCloudRegionCreateResponse(BaseModel):
+ """Response result for a single origin cloud region mapping."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: OriginCloudRegion
+ """A single origin IP-to-cloud-region mapping."""
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping was last modified."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_delete_response.py b/src/cloudflare/types/cache/origin_cloud_region_delete_response.py
new file mode 100644
index 00000000000..fb8012e50c7
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_delete_response.py
@@ -0,0 +1,25 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+from .origin_cloud_region import OriginCloudRegion
+
+__all__ = ["OriginCloudRegionDeleteResponse"]
+
+
+class OriginCloudRegionDeleteResponse(BaseModel):
+ """Response result for a single origin cloud region mapping."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: OriginCloudRegion
+ """A single origin IP-to-cloud-region mapping."""
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping was last modified."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_edit_params.py b/src/cloudflare/types/cache/origin_cloud_region_edit_params.py
new file mode 100644
index 00000000000..bac4d9de258
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_edit_params.py
@@ -0,0 +1,28 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Literal, Required, TypedDict
+
+__all__ = ["OriginCloudRegionEditParams"]
+
+
+class OriginCloudRegionEditParams(TypedDict, total=False):
+ zone_id: str
+ """Identifier."""
+
+ ip: Required[str]
+ """Origin IP address (IPv4 or IPv6).
+
+ Normalized to canonical form before storage (RFC 5952 for IPv6).
+ """
+
+ region: Required[str]
+ """Cloud vendor region identifier.
+
+ Must be a valid region for the specified vendor as returned by the
+ supported_regions endpoint.
+ """
+
+ vendor: Required[Literal["aws", "azure", "gcp", "oci"]]
+ """Cloud vendor hosting the origin. Must be one of the supported vendors."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_edit_response.py b/src/cloudflare/types/cache/origin_cloud_region_edit_response.py
new file mode 100644
index 00000000000..d84400575d2
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_edit_response.py
@@ -0,0 +1,24 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+from .origin_cloud_region import OriginCloudRegion
+
+__all__ = ["OriginCloudRegionEditResponse"]
+
+
+class OriginCloudRegionEditResponse(BaseModel):
+ """Response result for a list of origin cloud region mappings."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: List[OriginCloudRegion]
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping set was last modified. Null when no mappings exist."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_get_response.py b/src/cloudflare/types/cache/origin_cloud_region_get_response.py
new file mode 100644
index 00000000000..1cb87ebebcf
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_get_response.py
@@ -0,0 +1,25 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+from .origin_cloud_region import OriginCloudRegion
+
+__all__ = ["OriginCloudRegionGetResponse"]
+
+
+class OriginCloudRegionGetResponse(BaseModel):
+ """Response result for a single origin cloud region mapping."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: OriginCloudRegion
+ """A single origin IP-to-cloud-region mapping."""
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping was last modified."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_list_response.py b/src/cloudflare/types/cache/origin_cloud_region_list_response.py
new file mode 100644
index 00000000000..fc9fcf49a68
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_list_response.py
@@ -0,0 +1,24 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+from .origin_cloud_region import OriginCloudRegion
+
+__all__ = ["OriginCloudRegionListResponse"]
+
+
+class OriginCloudRegionListResponse(BaseModel):
+ """Response result for a list of origin cloud region mappings."""
+
+ id: Literal["origin_public_cloud_region"]
+
+ editable: bool
+ """Whether the setting can be modified by the current user."""
+
+ value: List[OriginCloudRegion]
+
+ modified_on: Optional[datetime] = None
+ """Time the mapping set was last modified. Null when no mappings exist."""
diff --git a/src/cloudflare/types/cache/origin_cloud_region_supported_regions_response.py b/src/cloudflare/types/cache/origin_cloud_region_supported_regions_response.py
new file mode 100644
index 00000000000..abd9b42d664
--- /dev/null
+++ b/src/cloudflare/types/cache/origin_cloud_region_supported_regions_response.py
@@ -0,0 +1,37 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Dict, List
+
+from ..._models import BaseModel
+
+__all__ = ["OriginCloudRegionSupportedRegionsResponse", "Vendor"]
+
+
+class Vendor(BaseModel):
+ """
+ A single supported cloud region with associated Tiered Cache upper-tier colocations.
+ """
+
+ name: str
+ """Cloud vendor region identifier."""
+
+ upper_tier_colos: List[str]
+ """
+ Cloudflare Tiered Cache upper-tier colocation codes co-located with this cloud
+ region. Requests from zones with a matching origin mapping will be routed
+ through these colos.
+ """
+
+
+class OriginCloudRegionSupportedRegionsResponse(BaseModel):
+ """Cloud vendors and their supported regions for origin cloud region mappings."""
+
+ obtained_codes: bool
+ """
+ Whether Cloudflare airport codes (IATA colo identifiers) were successfully
+ resolved for the `upper_tier_colos` field on each region. When `false`, the
+ `upper_tier_colos` arrays may be empty or incomplete.
+ """
+
+ vendors: Dict[str, List[Vendor]]
+ """Map of vendor name to list of supported regions."""
diff --git a/src/cloudflare/types/cloudforce_one/threat_event_list_params.py b/src/cloudflare/types/cloudforce_one/threat_event_list_params.py
index a5fbc858698..d0a33c525d5 100644
--- a/src/cloudflare/types/cloudforce_one/threat_event_list_params.py
+++ b/src/cloudflare/types/cloudforce_one/threat_event_list_params.py
@@ -25,6 +25,11 @@ class ThreatEventListParams(TypedDict, total=False):
"""
dataset_id: Annotated[SequenceNotStr[str], PropertyInfo(alias="datasetId")]
+ """
+ Dataset IDs to query events from (array of UUIDs), or special value 'all' or
+ '\\**' to query all event datasets for the account. If not provided, uses the
+ default dataset.
+ """
force_refresh: Annotated[bool, PropertyInfo(alias="forceRefresh")]
diff --git a/src/cloudflare/types/email_security/investigate/detection_get_response.py b/src/cloudflare/types/email_security/investigate/detection_get_response.py
index 0897317cee2..444f1b45083 100644
--- a/src/cloudflare/types/email_security/investigate/detection_get_response.py
+++ b/src/cloudflare/types/email_security/investigate/detection_get_response.py
@@ -5,7 +5,16 @@
from ...._models import BaseModel
-__all__ = ["DetectionGetResponse", "Attachment", "Header", "Link", "SenderInfo", "ThreatCategory", "Validation"]
+__all__ = [
+ "DetectionGetResponse",
+ "Attachment",
+ "Finding",
+ "Header",
+ "Link",
+ "SenderInfo",
+ "ThreatCategory",
+ "Validation",
+]
class Attachment(BaseModel):
@@ -33,6 +42,39 @@ class Attachment(BaseModel):
name: Optional[str] = None
+class Finding(BaseModel):
+ attachment: Optional[str] = None
+
+ detail: Optional[str] = None
+
+ detection: Optional[
+ Literal[
+ "MALICIOUS",
+ "MALICIOUS-BEC",
+ "SUSPICIOUS",
+ "SPOOF",
+ "SPAM",
+ "BULK",
+ "ENCRYPTED",
+ "EXTERNAL",
+ "UNKNOWN",
+ "NONE",
+ ]
+ ] = None
+
+ field: Optional[str] = None
+
+ name: Optional[str] = None
+
+ portion: Optional[str] = None
+
+ reason: Optional[str] = None
+
+ score: Optional[float] = None
+
+ value: Optional[str] = None
+
+
class Header(BaseModel):
name: str
@@ -82,6 +124,8 @@ class DetectionGetResponse(BaseModel):
attachments: List[Attachment]
+ findings: List[Finding]
+
headers: List[Header]
links: List[Link]
diff --git a/src/cloudflare/types/email_security/investigate_get_response.py b/src/cloudflare/types/email_security/investigate_get_response.py
index eb1b7a11982..1396753de51 100644
--- a/src/cloudflare/types/email_security/investigate_get_response.py
+++ b/src/cloudflare/types/email_security/investigate_get_response.py
@@ -128,6 +128,10 @@ class InvestigateGetResponse(BaseModel):
]
] = None
+ delivery_status: Optional[
+ List[Literal["delivered", "moved", "quarantined", "rejected", "deferred", "bounced", "queued"]]
+ ] = None
+
edf_hash: Optional[str] = None
envelope_from: Optional[str] = None
@@ -150,7 +154,7 @@ class InvestigateGetResponse(BaseModel):
] = None
findings: Optional[List[Finding]] = None
- """Deprecated."""
+ """Deprecated: use `/investigate/{id}/detections` instead."""
from_: Optional[str] = FieldInfo(alias="from", default=None)
diff --git a/src/cloudflare/types/email_security/investigate_list_params.py b/src/cloudflare/types/email_security/investigate_list_params.py
index 960e2998fba..e200d780eea 100644
--- a/src/cloudflare/types/email_security/investigate_list_params.py
+++ b/src/cloudflare/types/email_security/investigate_list_params.py
@@ -51,7 +51,7 @@ class InvestigateListParams(TypedDict, total=False):
"""Deprecated: Use cursor pagination instead."""
per_page: int
- """The number of results per page."""
+ """The number of results per page. Maximum value is 1000."""
query: str
"""The space-delimited term used in the query. The search is case-insensitive.
diff --git a/src/cloudflare/types/email_security/investigate_list_response.py b/src/cloudflare/types/email_security/investigate_list_response.py
index f9c44c7b2fc..12c5ae7cb75 100644
--- a/src/cloudflare/types/email_security/investigate_list_response.py
+++ b/src/cloudflare/types/email_security/investigate_list_response.py
@@ -128,6 +128,10 @@ class InvestigateListResponse(BaseModel):
]
] = None
+ delivery_status: Optional[
+ List[Literal["delivered", "moved", "quarantined", "rejected", "deferred", "bounced", "queued"]]
+ ] = None
+
edf_hash: Optional[str] = None
envelope_from: Optional[str] = None
@@ -150,7 +154,7 @@ class InvestigateListResponse(BaseModel):
] = None
findings: Optional[List[Finding]] = None
- """Deprecated."""
+ """Deprecated: use `/investigate/{id}/detections` instead."""
from_: Optional[str] = FieldInfo(alias="from", default=None)
diff --git a/src/cloudflare/types/iam/user_groups/member_create_params.py b/src/cloudflare/types/iam/user_groups/member_create_params.py
index ca4c234cfbf..fe09b3b57f3 100644
--- a/src/cloudflare/types/iam/user_groups/member_create_params.py
+++ b/src/cloudflare/types/iam/user_groups/member_create_params.py
@@ -5,16 +5,16 @@
from typing import Iterable
from typing_extensions import Required, TypedDict
-__all__ = ["MemberCreateParams", "Body"]
+__all__ = ["MemberCreateParams", "Member"]
class MemberCreateParams(TypedDict, total=False):
account_id: str
"""Account identifier tag."""
- body: Required[Iterable[Body]]
+ members: Required[Iterable[Member]]
-class Body(TypedDict, total=False):
+class Member(TypedDict, total=False):
id: Required[str]
"""The identifier of an existing account Member."""
diff --git a/src/cloudflare/types/iam/user_groups/member_update_params.py b/src/cloudflare/types/iam/user_groups/member_update_params.py
index 69f572b934c..017f3356339 100644
--- a/src/cloudflare/types/iam/user_groups/member_update_params.py
+++ b/src/cloudflare/types/iam/user_groups/member_update_params.py
@@ -5,17 +5,17 @@
from typing import Iterable
from typing_extensions import Required, TypedDict
-__all__ = ["MemberUpdateParams", "Body"]
+__all__ = ["MemberUpdateParams", "Member"]
class MemberUpdateParams(TypedDict, total=False):
account_id: str
"""Account identifier tag."""
- body: Required[Iterable[Body]]
+ members: Required[Iterable[Member]]
"""Set/Replace members to a user group."""
-class Body(TypedDict, total=False):
+class Member(TypedDict, total=False):
id: Required[str]
"""The identifier of an existing account Member."""
diff --git a/src/cloudflare/types/logpush/job_create_params.py b/src/cloudflare/types/logpush/job_create_params.py
index 53236f7b18c..15b72c6c169 100644
--- a/src/cloudflare/types/logpush/job_create_params.py
+++ b/src/cloudflare/types/logpush/job_create_params.py
@@ -38,6 +38,7 @@ class JobCreateParams(TypedDict, total=False):
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
diff --git a/src/cloudflare/types/logpush/logpush_job.py b/src/cloudflare/types/logpush/logpush_job.py
index 3d38bb4c678..3233139adf2 100644
--- a/src/cloudflare/types/logpush/logpush_job.py
+++ b/src/cloudflare/types/logpush/logpush_job.py
@@ -28,6 +28,7 @@ class LogpushJob(BaseModel):
"dns_firewall_logs",
"dns_logs",
"email_security_alerts",
+ "email_security_post_delivery_events",
"firewall_events",
"gateway_dns",
"gateway_http",
diff --git a/src/cloudflare/types/logpush/output_options.py b/src/cloudflare/types/logpush/output_options.py
index 55196f3e139..51f66c686b0 100644
--- a/src/cloudflare/types/logpush/output_options.py
+++ b/src/cloudflare/types/logpush/output_options.py
@@ -38,6 +38,12 @@ class OutputOptions(BaseModel):
specify all the fields names you are interested in.
"""
+ merge_subrequests: Optional[bool] = None
+ """If set to true, subrequests will be merged into the parent request.
+
+ Only supported for the `http_requests` dataset.
+ """
+
output_type: Optional[Literal["ndjson", "csv"]] = None
"""Specifies the output type, such as `ndjson` or `csv`.
diff --git a/src/cloudflare/types/logpush/output_options_param.py b/src/cloudflare/types/logpush/output_options_param.py
index f592a97e929..66e0821dbf8 100644
--- a/src/cloudflare/types/logpush/output_options_param.py
+++ b/src/cloudflare/types/logpush/output_options_param.py
@@ -39,6 +39,12 @@ class OutputOptionsParam(TypedDict, total=False):
specify all the fields names you are interested in.
"""
+ merge_subrequests: Optional[bool]
+ """If set to true, subrequests will be merged into the parent request.
+
+ Only supported for the `http_requests` dataset.
+ """
+
output_type: Literal["ndjson", "csv"]
"""Specifies the output type, such as `ndjson` or `csv`.
diff --git a/src/cloudflare/types/organizations/__init__.py b/src/cloudflare/types/organizations/__init__.py
index af7b2fd5f68..5a572cf4049 100644
--- a/src/cloudflare/types/organizations/__init__.py
+++ b/src/cloudflare/types/organizations/__init__.py
@@ -3,7 +3,6 @@
from __future__ import annotations
from .organization import Organization as Organization
-from .organization_profile import OrganizationProfile as OrganizationProfile
from .organization_list_params import OrganizationListParams as OrganizationListParams
from .organization_create_params import OrganizationCreateParams as OrganizationCreateParams
from .organization_update_params import OrganizationUpdateParams as OrganizationUpdateParams
diff --git a/src/cloudflare/types/workflows/instances/status_edit_params.py b/src/cloudflare/types/workflows/instances/status_edit_params.py
index edce6009d3c..33f83553d8a 100644
--- a/src/cloudflare/types/workflows/instances/status_edit_params.py
+++ b/src/cloudflare/types/workflows/instances/status_edit_params.py
@@ -2,9 +2,11 @@
from __future__ import annotations
-from typing_extensions import Literal, Required, TypedDict
+from typing_extensions import Literal, Required, Annotated, TypedDict
-__all__ = ["StatusEditParams"]
+from ...._utils import PropertyInfo
+
+__all__ = ["StatusEditParams", "From"]
class StatusEditParams(TypedDict, total=False):
@@ -14,3 +16,16 @@ class StatusEditParams(TypedDict, total=False):
status: Required[Literal["resume", "pause", "terminate", "restart"]]
"""Apply action to instance."""
+
+ from_: Annotated[From, PropertyInfo(alias="from")]
+ """Step to restart from. Only applicable when status is "restart"."""
+
+
+class From(TypedDict, total=False):
+ """Step to restart from. Only applicable when status is "restart"."""
+
+ name: Required[str]
+
+ count: int
+
+ type: Literal["do", "sleep", "waitForEvent"]
diff --git a/src/cloudflare/types/zero_trust/gateway/gateway_list.py b/src/cloudflare/types/zero_trust/gateway/gateway_list.py
index 5051ff743cb..02ceb52079b 100644
--- a/src/cloudflare/types/zero_trust/gateway/gateway_list.py
+++ b/src/cloudflare/types/zero_trust/gateway/gateway_list.py
@@ -28,7 +28,7 @@ class GatewayList(BaseModel):
name: Optional[str] = None
"""Specify the list name."""
- type: Optional[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"]] = None
+ type: Optional[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]] = None
"""Specify the list type."""
updated_at: Optional[datetime] = None
diff --git a/src/cloudflare/types/zero_trust/gateway/list_create_params.py b/src/cloudflare/types/zero_trust/gateway/list_create_params.py
index aee65050a6b..57342cb6be7 100644
--- a/src/cloudflare/types/zero_trust/gateway/list_create_params.py
+++ b/src/cloudflare/types/zero_trust/gateway/list_create_params.py
@@ -14,7 +14,7 @@ class ListCreateParams(TypedDict, total=False):
name: Required[str]
"""Specify the list name."""
- type: Required[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"]]
+ type: Required[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]]
"""Specify the list type."""
description: str
diff --git a/src/cloudflare/types/zero_trust/gateway/list_create_response.py b/src/cloudflare/types/zero_trust/gateway/list_create_response.py
index 0aa554d4b58..96e72c4c388 100644
--- a/src/cloudflare/types/zero_trust/gateway/list_create_response.py
+++ b/src/cloudflare/types/zero_trust/gateway/list_create_response.py
@@ -25,7 +25,7 @@ class ListCreateResponse(BaseModel):
name: Optional[str] = None
"""Specify the list name."""
- type: Optional[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"]] = None
+ type: Optional[Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]] = None
"""Specify the list type."""
updated_at: Optional[datetime] = None
diff --git a/src/cloudflare/types/zero_trust/gateway/list_list_params.py b/src/cloudflare/types/zero_trust/gateway/list_list_params.py
index 5d15d3a75fe..e695f4feadf 100644
--- a/src/cloudflare/types/zero_trust/gateway/list_list_params.py
+++ b/src/cloudflare/types/zero_trust/gateway/list_list_params.py
@@ -10,5 +10,5 @@
class ListListParams(TypedDict, total=False):
account_id: str
- type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE"]
+ type: Literal["SERIAL", "URL", "DOMAIN", "EMAIL", "IP", "CATEGORY", "LOCATION", "DEVICE", "AAGUID"]
"""Specify the list type."""
diff --git a/src/cloudflare/types/zero_trust/gateway/rule_setting.py b/src/cloudflare/types/zero_trust/gateway/rule_setting.py
index 4d9f97e1d55..f35a853629b 100644
--- a/src/cloudflare/types/zero_trust/gateway/rule_setting.py
+++ b/src/cloudflare/types/zero_trust/gateway/rule_setting.py
@@ -64,8 +64,8 @@ class BISOAdminControls(BaseModel):
download: Optional[Literal["enabled", "disabled", "remote_only"]] = None
"""Configure download behavior.
- When set to remote_only, users can view downloads but cannot save them. Applies
- only when version == "v2".
+ When set to remote_only, users can view downloads but cannot save them. If this
+ field is absent, downloading remains enabled. Applies only when version == "v2".
"""
dp: Optional[bool] = None
@@ -105,6 +105,12 @@ class BISOAdminControls(BaseModel):
version: Optional[Literal["v1", "v2"]] = None
"""Indicate which version of the browser isolation controls should apply."""
+ wm_id: Optional[str] = None
+ """Specify the watermark ID (UUID) to apply to the isolated browser session.
+
+ When present, enables watermark rendering in the isolated browser.
+ """
+
class BlockPage(BaseModel):
"""Configure custom block page settings.
diff --git a/src/cloudflare/types/zero_trust/gateway/rule_setting_param.py b/src/cloudflare/types/zero_trust/gateway/rule_setting_param.py
index 415870cae73..7303c240398 100644
--- a/src/cloudflare/types/zero_trust/gateway/rule_setting_param.py
+++ b/src/cloudflare/types/zero_trust/gateway/rule_setting_param.py
@@ -64,8 +64,8 @@ class BISOAdminControls(TypedDict, total=False):
download: Literal["enabled", "disabled", "remote_only"]
"""Configure download behavior.
- When set to remote_only, users can view downloads but cannot save them. Applies
- only when version == "v2".
+ When set to remote_only, users can view downloads but cannot save them. If this
+ field is absent, downloading remains enabled. Applies only when version == "v2".
"""
dp: bool
@@ -105,6 +105,12 @@ class BISOAdminControls(TypedDict, total=False):
version: Literal["v1", "v2"]
"""Indicate which version of the browser isolation controls should apply."""
+ wm_id: str
+ """Specify the watermark ID (UUID) to apply to the isolated browser session.
+
+ When present, enables watermark rendering in the isolated browser.
+ """
+
class BlockPage(TypedDict, total=False):
"""Configure custom block page settings.
diff --git a/tests/api_resources/cache/test_origin_cloud_regions.py b/tests/api_resources/cache/test_origin_cloud_regions.py
new file mode 100644
index 00000000000..53a5c9bf953
--- /dev/null
+++ b/tests/api_resources/cache/test_origin_cloud_regions.py
@@ -0,0 +1,829 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, Optional, cast
+
+import pytest
+
+from cloudflare import Cloudflare, AsyncCloudflare
+from tests.utils import assert_matches_type
+from cloudflare.types.cache import (
+ OriginCloudRegionGetResponse,
+ OriginCloudRegionEditResponse,
+ OriginCloudRegionListResponse,
+ OriginCloudRegionCreateResponse,
+ OriginCloudRegionDeleteResponse,
+ OriginCloudRegionBulkEditResponse,
+ OriginCloudRegionBulkDeleteResponse,
+ OriginCloudRegionSupportedRegionsResponse,
+)
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestOriginCloudRegions:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @parametrize
+ def test_method_create(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_create(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_create(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_create(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.create(
+ zone_id="",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+
+ @parametrize
+ def test_method_list(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_list(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_list(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_list(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.list(
+ zone_id="",
+ )
+
+ @parametrize
+ def test_method_delete(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_delete(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_delete(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_delete(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `origin_ip` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ @parametrize
+ def test_method_bulk_delete(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_bulk_delete(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_bulk_delete(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_bulk_delete(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.bulk_delete(
+ zone_id="",
+ )
+
+ @parametrize
+ def test_method_bulk_edit(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_bulk_edit(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_bulk_edit(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_bulk_edit(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.bulk_edit(
+ zone_id="",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+
+ @parametrize
+ def test_method_edit(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_edit(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_edit(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_edit(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.edit(
+ zone_id="",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+
+ @parametrize
+ def test_method_get(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_get(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_get(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_get(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `origin_ip` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ @parametrize
+ def test_method_supported_regions(self, client: Cloudflare) -> None:
+ origin_cloud_region = client.cache.origin_cloud_regions.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_raw_response_supported_regions(self, client: Cloudflare) -> None:
+ response = client.cache.origin_cloud_regions.with_raw_response.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = response.parse()
+ assert_matches_type(Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ def test_streaming_response_supported_regions(self, client: Cloudflare) -> None:
+ with client.cache.origin_cloud_regions.with_streaming_response.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = response.parse()
+ assert_matches_type(
+ Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"]
+ )
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_supported_regions(self, client: Cloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ client.cache.origin_cloud_regions.with_raw_response.supported_regions(
+ zone_id="",
+ )
+
+
+class TestAsyncOriginCloudRegions:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @parametrize
+ async def test_method_create(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_create(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_create(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.create(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionCreateResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_create(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.create(
+ zone_id="",
+ ip="192.0.2.1",
+ region="us-east-1",
+ vendor="aws",
+ )
+
+ @parametrize
+ async def test_method_list(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.list(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionListResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_list(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.list(
+ zone_id="",
+ )
+
+ @parametrize
+ async def test_method_delete(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_delete(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_delete(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionDeleteResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_delete(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="192.0.2.1",
+ zone_id="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `origin_ip` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.delete(
+ origin_ip="",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ @parametrize
+ async def test_method_bulk_delete(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_bulk_delete(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_bulk_delete(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.bulk_delete(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkDeleteResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_bulk_delete(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.bulk_delete(
+ zone_id="",
+ )
+
+ @parametrize
+ async def test_method_bulk_edit(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_bulk_edit(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_bulk_edit(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.bulk_edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionBulkEditResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_bulk_edit(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.bulk_edit(
+ zone_id="",
+ body=[
+ {
+ "ip": "192.0.2.1",
+ "region": "us-east-1",
+ "vendor": "aws",
+ },
+ {
+ "ip": "2001:db8::1",
+ "region": "us-central1",
+ "vendor": "gcp",
+ },
+ ],
+ )
+
+ @parametrize
+ async def test_method_edit(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_edit(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_edit(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.edit(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionEditResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_edit(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.edit(
+ zone_id="",
+ ip="2001:db8::1",
+ region="us-central1",
+ vendor="gcp",
+ )
+
+ @parametrize
+ async def test_method_get(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionGetResponse], origin_cloud_region, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_get(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="192.0.2.1",
+ zone_id="",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `origin_ip` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.get(
+ origin_ip="",
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ @parametrize
+ async def test_method_supported_regions(self, async_client: AsyncCloudflare) -> None:
+ origin_cloud_region = await async_client.cache.origin_cloud_regions.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+ assert_matches_type(Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_raw_response_supported_regions(self, async_client: AsyncCloudflare) -> None:
+ response = await async_client.cache.origin_cloud_regions.with_raw_response.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ origin_cloud_region = await response.parse()
+ assert_matches_type(Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_supported_regions(self, async_client: AsyncCloudflare) -> None:
+ async with async_client.cache.origin_cloud_regions.with_streaming_response.supported_regions(
+ zone_id="023e105f4ecef8ad9ca31a8372d0c353",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ origin_cloud_region = await response.parse()
+ assert_matches_type(
+ Optional[OriginCloudRegionSupportedRegionsResponse], origin_cloud_region, path=["response"]
+ )
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_supported_regions(self, async_client: AsyncCloudflare) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `zone_id` but received ''"):
+ await async_client.cache.origin_cloud_regions.with_raw_response.supported_regions(
+ zone_id="",
+ )
diff --git a/tests/api_resources/iam/user_groups/test_members.py b/tests/api_resources/iam/user_groups/test_members.py
index 603db00d3d0..c9830c6e646 100644
--- a/tests/api_resources/iam/user_groups/test_members.py
+++ b/tests/api_resources/iam/user_groups/test_members.py
@@ -28,7 +28,7 @@ def test_method_create(self, client: Cloudflare) -> None:
member = client.iam.user_groups.members.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
@@ -37,7 +37,7 @@ def test_raw_response_create(self, client: Cloudflare) -> None:
response = client.iam.user_groups.members.with_raw_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert response.is_closed is True
@@ -50,7 +50,7 @@ def test_streaming_response_create(self, client: Cloudflare) -> None:
with client.iam.user_groups.members.with_streaming_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -66,14 +66,14 @@ def test_path_params_create(self, client: Cloudflare) -> None:
client.iam.user_groups.members.with_raw_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `user_group_id` but received ''"):
client.iam.user_groups.members.with_raw_response.create(
user_group_id="",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
@parametrize
@@ -81,7 +81,7 @@ def test_method_update(self, client: Cloudflare) -> None:
member = client.iam.user_groups.members.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert_matches_type(SyncSinglePage[MemberUpdateResponse], member, path=["response"])
@@ -90,7 +90,7 @@ def test_raw_response_update(self, client: Cloudflare) -> None:
response = client.iam.user_groups.members.with_raw_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert response.is_closed is True
@@ -103,7 +103,7 @@ def test_streaming_response_update(self, client: Cloudflare) -> None:
with client.iam.user_groups.members.with_streaming_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -119,14 +119,14 @@ def test_path_params_update(self, client: Cloudflare) -> None:
client.iam.user_groups.members.with_raw_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `user_group_id` but received ''"):
client.iam.user_groups.members.with_raw_response.update(
user_group_id="",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
@parametrize
@@ -258,7 +258,7 @@ async def test_method_create(self, async_client: AsyncCloudflare) -> None:
member = await async_client.iam.user_groups.members.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
@@ -267,7 +267,7 @@ async def test_raw_response_create(self, async_client: AsyncCloudflare) -> None:
response = await async_client.iam.user_groups.members.with_raw_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert response.is_closed is True
@@ -280,7 +280,7 @@ async def test_streaming_response_create(self, async_client: AsyncCloudflare) ->
async with async_client.iam.user_groups.members.with_streaming_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -296,14 +296,14 @@ async def test_path_params_create(self, async_client: AsyncCloudflare) -> None:
await async_client.iam.user_groups.members.with_raw_response.create(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `user_group_id` but received ''"):
await async_client.iam.user_groups.members.with_raw_response.create(
user_group_id="",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
@parametrize
@@ -311,7 +311,7 @@ async def test_method_update(self, async_client: AsyncCloudflare) -> None:
member = await async_client.iam.user_groups.members.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert_matches_type(AsyncSinglePage[MemberUpdateResponse], member, path=["response"])
@@ -320,7 +320,7 @@ async def test_raw_response_update(self, async_client: AsyncCloudflare) -> None:
response = await async_client.iam.user_groups.members.with_raw_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
assert response.is_closed is True
@@ -333,7 +333,7 @@ async def test_streaming_response_update(self, async_client: AsyncCloudflare) ->
async with async_client.iam.user_groups.members.with_streaming_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -349,14 +349,14 @@ async def test_path_params_update(self, async_client: AsyncCloudflare) -> None:
await async_client.iam.user_groups.members.with_raw_response.update(
user_group_id="023e105f4ecef8ad9ca31a8372d0c353",
account_id="",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `user_group_id` but received ''"):
await async_client.iam.user_groups.members.with_raw_response.update(
user_group_id="",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
- body=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
+ members=[{"id": "023e105f4ecef8ad9ca31a8372d0c353"}],
)
@parametrize
diff --git a/tests/api_resources/logpush/test_jobs.py b/tests/api_resources/logpush/test_jobs.py
index 862caad9f98..465a81c9b56 100644
--- a/tests/api_resources/logpush/test_jobs.py
+++ b/tests/api_resources/logpush/test_jobs.py
@@ -49,6 +49,7 @@ def test_method_create_with_all_params(self, client: Cloudflare) -> None:
"cve_2021_44228": False,
"field_delimiter": ",",
"field_names": ["Datetime", "DstIP", "SrcIP"],
+ "merge_subrequests": True,
"output_type": "ndjson",
"record_delimiter": "",
"record_prefix": "{",
@@ -135,6 +136,7 @@ def test_method_update_with_all_params(self, client: Cloudflare) -> None:
"cve_2021_44228": False,
"field_delimiter": ",",
"field_names": ["Datetime", "DstIP", "SrcIP"],
+ "merge_subrequests": True,
"output_type": "ndjson",
"record_delimiter": "",
"record_prefix": "{",
@@ -404,6 +406,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncCloudflare
"cve_2021_44228": False,
"field_delimiter": ",",
"field_names": ["Datetime", "DstIP", "SrcIP"],
+ "merge_subrequests": True,
"output_type": "ndjson",
"record_delimiter": "",
"record_prefix": "{",
@@ -490,6 +493,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncCloudflare
"cve_2021_44228": False,
"field_delimiter": ",",
"field_names": ["Datetime", "DstIP", "SrcIP"],
+ "merge_subrequests": True,
"output_type": "ndjson",
"record_delimiter": "",
"record_prefix": "{",
diff --git a/tests/api_resources/organizations/test_organization_profile.py b/tests/api_resources/organizations/test_organization_profile.py
index a35af6ef2da..769bf2368a8 100644
--- a/tests/api_resources/organizations/test_organization_profile.py
+++ b/tests/api_resources/organizations/test_organization_profile.py
@@ -9,9 +9,7 @@
from cloudflare import Cloudflare, AsyncCloudflare
from tests.utils import assert_matches_type
-from cloudflare.types.organizations.organization_profile_get_params import ( # pyright: ignore[reportMissingImports]
- Result, # pyright: ignore[reportUnknownVariableType]
-)
+from cloudflare.types.organizations.organization_profile_get_params import Result
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -79,32 +77,32 @@ def test_path_params_update(self, client: Cloudflare) -> None:
@parametrize
def test_method_get(self, client: Cloudflare) -> None:
- organization_profile = client.organizations.organization_profile.get( # pyright: ignore[reportUnknownVariableType, reportUnknownMemberType]
+ organization_profile = client.organizations.organization_profile.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
)
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ assert_matches_type(Result, organization_profile, path=["response"])
@parametrize
def test_raw_response_get(self, client: Cloudflare) -> None:
- response = client.organizations.organization_profile.with_raw_response.get( # pyright: ignore[reportUnknownVariableType]
+ response = client.organizations.organization_profile.with_raw_response.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- organization_profile = response.parse() # pyright: ignore[reportUnknownVariableType]
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ organization_profile = response.parse()
+ assert_matches_type(Result, organization_profile, path=["response"])
@parametrize
def test_streaming_response_get(self, client: Cloudflare) -> None:
- with client.organizations.organization_profile.with_streaming_response.get( # pyright: ignore[reportUnknownVariableType]
+ with client.organizations.organization_profile.with_streaming_response.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
- ) as response: # pyright: ignore[reportUnknownVariableType]
+ ) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- organization_profile = response.parse() # pyright: ignore[reportUnknownVariableType]
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ organization_profile = response.parse()
+ assert_matches_type(Result, organization_profile, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -181,32 +179,32 @@ async def test_path_params_update(self, async_client: AsyncCloudflare) -> None:
@parametrize
async def test_method_get(self, async_client: AsyncCloudflare) -> None:
- organization_profile = await async_client.organizations.organization_profile.get( # pyright: ignore[reportUnknownVariableType, reportUnknownMemberType]
+ organization_profile = await async_client.organizations.organization_profile.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
)
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ assert_matches_type(Result, organization_profile, path=["response"])
@parametrize
async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.organizations.organization_profile.with_raw_response.get( # pyright: ignore[reportUnknownVariableType]
+ response = await async_client.organizations.organization_profile.with_raw_response.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- organization_profile = await response.parse() # pyright: ignore[reportUnknownVariableType]
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ organization_profile = await response.parse()
+ assert_matches_type(Result, organization_profile, path=["response"])
@parametrize
async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> None:
- async with async_client.organizations.organization_profile.with_streaming_response.get( # pyright: ignore[reportUnknownVariableType]
+ async with async_client.organizations.organization_profile.with_streaming_response.get(
"a7b9c3d2e8f4g1h5i6j0k9l2m3n7o4p8",
- ) as response: # pyright: ignore[reportUnknownVariableType]
+ ) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- organization_profile = await response.parse() # pyright: ignore[reportUnknownVariableType]
- assert_matches_type(Result, organization_profile, path=["response"]) # pyright: ignore[reportUnknownArgumentType]
+ organization_profile = await response.parse()
+ assert_matches_type(Result, organization_profile, path=["response"])
assert cast(Any, response.is_closed) is True
diff --git a/tests/api_resources/workflows/instances/test_status.py b/tests/api_resources/workflows/instances/test_status.py
index 5b7e8ff5db9..6cf1e77a82d 100644
--- a/tests/api_resources/workflows/instances/test_status.py
+++ b/tests/api_resources/workflows/instances/test_status.py
@@ -27,6 +27,21 @@ def test_method_edit(self, client: Cloudflare) -> None:
)
assert_matches_type(StatusEditResponse, status, path=["response"])
+ @parametrize
+ def test_method_edit_with_all_params(self, client: Cloudflare) -> None:
+ status = client.workflows.instances.status.edit(
+ instance_id="x",
+ account_id="account_id",
+ workflow_name="x",
+ status="resume",
+ from_={
+ "name": "x",
+ "count": 1,
+ "type": "do",
+ },
+ )
+ assert_matches_type(StatusEditResponse, status, path=["response"])
+
@parametrize
def test_raw_response_edit(self, client: Cloudflare) -> None:
response = client.workflows.instances.status.with_raw_response.edit(
@@ -99,6 +114,21 @@ async def test_method_edit(self, async_client: AsyncCloudflare) -> None:
)
assert_matches_type(StatusEditResponse, status, path=["response"])
+ @parametrize
+ async def test_method_edit_with_all_params(self, async_client: AsyncCloudflare) -> None:
+ status = await async_client.workflows.instances.status.edit(
+ instance_id="x",
+ account_id="account_id",
+ workflow_name="x",
+ status="resume",
+ from_={
+ "name": "x",
+ "count": 1,
+ "type": "do",
+ },
+ )
+ assert_matches_type(StatusEditResponse, status, path=["response"])
+
@parametrize
async def test_raw_response_edit(self, async_client: AsyncCloudflare) -> None:
response = await async_client.workflows.instances.status.with_raw_response.edit(
diff --git a/tests/api_resources/zero_trust/gateway/test_rules.py b/tests/api_resources/zero_trust/gateway/test_rules.py
index e425820ab37..58c1846d958 100644
--- a/tests/api_resources/zero_trust/gateway/test_rules.py
+++ b/tests/api_resources/zero_trust/gateway/test_rules.py
@@ -66,6 +66,7 @@ def test_method_create_with_all_params(self, client: Cloudflare) -> None:
"printing": "enabled",
"upload": "enabled",
"version": "v1",
+ "wm_id": "475345dc-5299-4b6e-8f6a-3d3e4c8e9f1a",
},
"block_page": {
"target_uri": "https://example.com",
@@ -230,6 +231,7 @@ def test_method_update_with_all_params(self, client: Cloudflare) -> None:
"printing": "enabled",
"upload": "enabled",
"version": "v1",
+ "wm_id": "475345dc-5299-4b6e-8f6a-3d3e4c8e9f1a",
},
"block_page": {
"target_uri": "https://example.com",
@@ -629,6 +631,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncCloudflare
"printing": "enabled",
"upload": "enabled",
"version": "v1",
+ "wm_id": "475345dc-5299-4b6e-8f6a-3d3e4c8e9f1a",
},
"block_page": {
"target_uri": "https://example.com",
@@ -793,6 +796,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncCloudflare
"printing": "enabled",
"upload": "enabled",
"version": "v1",
+ "wm_id": "475345dc-5299-4b6e-8f6a-3d3e4c8e9f1a",
},
"block_page": {
"target_uri": "https://example.com",