From 18196851a42f151eeb534fc7bb673732e0d4bea4 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 29 Dec 2024 06:11:06 +0000
Subject: [PATCH] feat(api): api update
---
.stats.yml | 4 +-
api.md | 45 -
src/cloudflare/_client.py | 38 -
.../resources/url_scanner/__init__.py | 47 -
.../resources/url_scanner/responses.py | 182 ----
src/cloudflare/resources/url_scanner/scans.py | 884 ------------------
.../resources/url_scanner/url_scanner.py | 134 ---
src/cloudflare/types/url_scanner/__init__.py | 12 -
.../url_scanner/response_get_response.py | 7 -
.../url_scanner/scan_bulk_create_params.py | 40 -
.../url_scanner/scan_bulk_create_response.py | 34 -
.../types/url_scanner/scan_create_params.py | 35 -
.../types/url_scanner/scan_create_response.py | 7 -
.../types/url_scanner/scan_dom_response.py | 7 -
.../types/url_scanner/scan_get_response.py | 859 -----------------
.../types/url_scanner/scan_har_response.py | 143 ---
.../types/url_scanner/scan_list_params.py | 15 -
.../types/url_scanner/scan_list_response.py | 61 --
.../url_scanner/scan_screenshot_params.py | 17 -
tests/api_resources/url_scanner/__init__.py | 1 -
.../url_scanner/test_responses.py | 117 ---
tests/api_resources/url_scanner/test_scans.py | 777 ---------------
22 files changed, 2 insertions(+), 3464 deletions(-)
delete mode 100644 src/cloudflare/resources/url_scanner/__init__.py
delete mode 100644 src/cloudflare/resources/url_scanner/responses.py
delete mode 100644 src/cloudflare/resources/url_scanner/scans.py
delete mode 100644 src/cloudflare/resources/url_scanner/url_scanner.py
delete mode 100644 src/cloudflare/types/url_scanner/response_get_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_bulk_create_params.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_bulk_create_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_create_params.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_create_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_dom_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_get_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_har_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_list_params.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_list_response.py
delete mode 100644 src/cloudflare/types/url_scanner/scan_screenshot_params.py
delete mode 100644 tests/api_resources/url_scanner/__init__.py
delete mode 100644 tests/api_resources/url_scanner/test_responses.py
delete mode 100644 tests/api_resources/url_scanner/test_scans.py
diff --git a/.stats.yml b/.stats.yml
index e0f8990f77a..86c13449517 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
-configured_endpoints: 1483
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-e77c57a9eafea3cb08364e2c43b0e4f54cef07caee6bbbd0b9200161e9ff67e9.yml
+configured_endpoints: 1475
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-663ea50351c42f1c51f49f099c888745f6a06cf22b8fe46cf1fa9ae89fdfdd61.yml
diff --git a/api.md b/api.md
index c81f4a01120..3a11184648f 100644
--- a/api.md
+++ b/api.md
@@ -6594,51 +6594,6 @@ Methods:
- client.vectorize.indexes.metadata_index.list(index_name, \*, account_id) -> Optional[MetadataIndexListResponse]
- client.vectorize.indexes.metadata_index.delete(index_name, \*, account_id, \*\*params) -> Optional[MetadataIndexDeleteResponse]
-# URLScanner
-
-Types:
-
-```python
-from cloudflare.types.url_scanner import URLScannerDomain, URLScannerTask
-```
-
-## Responses
-
-Types:
-
-```python
-from cloudflare.types.url_scanner import ResponseGetResponse
-```
-
-Methods:
-
-- client.url_scanner.responses.get(response_id, \*, account_id) -> str
-
-## Scans
-
-Types:
-
-```python
-from cloudflare.types.url_scanner import (
- ScanCreateResponse,
- ScanListResponse,
- ScanBulkCreateResponse,
- ScanDOMResponse,
- ScanGetResponse,
- ScanHARResponse,
-)
-```
-
-Methods:
-
-- client.url_scanner.scans.create(account_id, \*\*params) -> str
-- client.url_scanner.scans.list(account_id, \*\*params) -> ScanListResponse
-- client.url_scanner.scans.bulk_create(account_id, \*\*params) -> ScanBulkCreateResponse
-- client.url_scanner.scans.dom(scan_id, \*, account_id) -> str
-- client.url_scanner.scans.get(scan_id, \*, account_id) -> ScanGetResponse
-- client.url_scanner.scans.har(scan_id, \*, account_id) -> ScanHARResponse
-- client.url_scanner.scans.screenshot(scan_id, \*, account_id, \*\*params) -> BinaryAPIResponse
-
# Radar
## AI
diff --git a/src/cloudflare/_client.py b/src/cloudflare/_client.py
index f48b5ae2359..8b18c73296e 100644
--- a/src/cloudflare/_client.py
+++ b/src/cloudflare/_client.py
@@ -88,7 +88,6 @@
memberships,
page_shield,
rate_limits,
- url_scanner,
dns_firewall,
healthchecks,
security_txt,
@@ -186,7 +185,6 @@
from .resources.botnet_feed.botnet_feed import BotnetFeedResource, AsyncBotnetFeedResource
from .resources.diagnostics.diagnostics import DiagnosticsResource, AsyncDiagnosticsResource
from .resources.page_shield.page_shield import PageShieldResource, AsyncPageShieldResource
- from .resources.url_scanner.url_scanner import URLScannerResource, AsyncURLScannerResource
from .resources.dns_firewall.dns_firewall import DNSFirewallResource, AsyncDNSFirewallResource
from .resources.healthchecks.healthchecks import HealthchecksResource, AsyncHealthchecksResource
from .resources.email_routing.email_routing import EmailRoutingResource, AsyncEmailRoutingResource
@@ -706,12 +704,6 @@ def vectorize(self) -> VectorizeResource:
return VectorizeResource(self)
- @cached_property
- def url_scanner(self) -> URLScannerResource:
- from .resources.url_scanner import URLScannerResource
-
- return URLScannerResource(self)
-
@cached_property
def radar(self) -> RadarResource:
from .resources.radar import RadarResource
@@ -1477,12 +1469,6 @@ def vectorize(self) -> AsyncVectorizeResource:
return AsyncVectorizeResource(self)
- @cached_property
- def url_scanner(self) -> AsyncURLScannerResource:
- from .resources.url_scanner import AsyncURLScannerResource
-
- return AsyncURLScannerResource(self)
-
@cached_property
def radar(self) -> AsyncRadarResource:
from .resources.radar import AsyncRadarResource
@@ -2181,12 +2167,6 @@ def vectorize(self) -> vectorize.VectorizeResourceWithRawResponse:
return VectorizeResourceWithRawResponse(self._client.vectorize)
- @cached_property
- def url_scanner(self) -> url_scanner.URLScannerResourceWithRawResponse:
- from .resources.url_scanner import URLScannerResourceWithRawResponse
-
- return URLScannerResourceWithRawResponse(self._client.url_scanner)
-
@cached_property
def radar(self) -> radar.RadarResourceWithRawResponse:
from .resources.radar import RadarResourceWithRawResponse
@@ -2706,12 +2686,6 @@ def vectorize(self) -> vectorize.AsyncVectorizeResourceWithRawResponse:
return AsyncVectorizeResourceWithRawResponse(self._client.vectorize)
- @cached_property
- def url_scanner(self) -> url_scanner.AsyncURLScannerResourceWithRawResponse:
- from .resources.url_scanner import AsyncURLScannerResourceWithRawResponse
-
- return AsyncURLScannerResourceWithRawResponse(self._client.url_scanner)
-
@cached_property
def radar(self) -> radar.AsyncRadarResourceWithRawResponse:
from .resources.radar import AsyncRadarResourceWithRawResponse
@@ -3231,12 +3205,6 @@ def vectorize(self) -> vectorize.VectorizeResourceWithStreamingResponse:
return VectorizeResourceWithStreamingResponse(self._client.vectorize)
- @cached_property
- def url_scanner(self) -> url_scanner.URLScannerResourceWithStreamingResponse:
- from .resources.url_scanner import URLScannerResourceWithStreamingResponse
-
- return URLScannerResourceWithStreamingResponse(self._client.url_scanner)
-
@cached_property
def radar(self) -> radar.RadarResourceWithStreamingResponse:
from .resources.radar import RadarResourceWithStreamingResponse
@@ -3760,12 +3728,6 @@ def vectorize(self) -> vectorize.AsyncVectorizeResourceWithStreamingResponse:
return AsyncVectorizeResourceWithStreamingResponse(self._client.vectorize)
- @cached_property
- def url_scanner(self) -> url_scanner.AsyncURLScannerResourceWithStreamingResponse:
- from .resources.url_scanner import AsyncURLScannerResourceWithStreamingResponse
-
- return AsyncURLScannerResourceWithStreamingResponse(self._client.url_scanner)
-
@cached_property
def radar(self) -> radar.AsyncRadarResourceWithStreamingResponse:
from .resources.radar import AsyncRadarResourceWithStreamingResponse
diff --git a/src/cloudflare/resources/url_scanner/__init__.py b/src/cloudflare/resources/url_scanner/__init__.py
deleted file mode 100644
index 047e0b9adea..00000000000
--- a/src/cloudflare/resources/url_scanner/__init__.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from .scans import (
- ScansResource,
- AsyncScansResource,
- ScansResourceWithRawResponse,
- AsyncScansResourceWithRawResponse,
- ScansResourceWithStreamingResponse,
- AsyncScansResourceWithStreamingResponse,
-)
-from .responses import (
- ResponsesResource,
- AsyncResponsesResource,
- ResponsesResourceWithRawResponse,
- AsyncResponsesResourceWithRawResponse,
- ResponsesResourceWithStreamingResponse,
- AsyncResponsesResourceWithStreamingResponse,
-)
-from .url_scanner import (
- URLScannerResource,
- AsyncURLScannerResource,
- URLScannerResourceWithRawResponse,
- AsyncURLScannerResourceWithRawResponse,
- URLScannerResourceWithStreamingResponse,
- AsyncURLScannerResourceWithStreamingResponse,
-)
-
-__all__ = [
- "ResponsesResource",
- "AsyncResponsesResource",
- "ResponsesResourceWithRawResponse",
- "AsyncResponsesResourceWithRawResponse",
- "ResponsesResourceWithStreamingResponse",
- "AsyncResponsesResourceWithStreamingResponse",
- "ScansResource",
- "AsyncScansResource",
- "ScansResourceWithRawResponse",
- "AsyncScansResourceWithRawResponse",
- "ScansResourceWithStreamingResponse",
- "AsyncScansResourceWithStreamingResponse",
- "URLScannerResource",
- "AsyncURLScannerResource",
- "URLScannerResourceWithRawResponse",
- "AsyncURLScannerResourceWithRawResponse",
- "URLScannerResourceWithStreamingResponse",
- "AsyncURLScannerResourceWithStreamingResponse",
-]
diff --git a/src/cloudflare/resources/url_scanner/responses.py b/src/cloudflare/resources/url_scanner/responses.py
deleted file mode 100644
index cc0beef4e57..00000000000
--- a/src/cloudflare/resources/url_scanner/responses.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import httpx
-
-from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
-from ..._compat import cached_property
-from ..._resource import SyncAPIResource, AsyncAPIResource
-from ..._response import (
- to_raw_response_wrapper,
- to_streamed_response_wrapper,
- async_to_raw_response_wrapper,
- async_to_streamed_response_wrapper,
-)
-from ..._base_client import make_request_options
-
-__all__ = ["ResponsesResource", "AsyncResponsesResource"]
-
-
-class ResponsesResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ResponsesResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 ResponsesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ResponsesResourceWithStreamingResponse:
- """
- 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 ResponsesResourceWithStreamingResponse(self)
-
- def get(
- self,
- response_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,
- ) -> str:
- """Returns the raw response of the network request.
-
- If HTML, a plain text response
- will be returned.
-
- Args:
- account_id: Account Id.
-
- response_id: Response hash.
-
- 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 response_id:
- raise ValueError(f"Expected a non-empty value for `response_id` but received {response_id!r}")
- extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
- return self._get(
- f"/accounts/{account_id}/urlscanner/v2/responses/{response_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=str,
- )
-
-
-class AsyncResponsesResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncResponsesResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 AsyncResponsesResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncResponsesResourceWithStreamingResponse:
- """
- 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 AsyncResponsesResourceWithStreamingResponse(self)
-
- async def get(
- self,
- response_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,
- ) -> str:
- """Returns the raw response of the network request.
-
- If HTML, a plain text response
- will be returned.
-
- Args:
- account_id: Account Id.
-
- response_id: Response hash.
-
- 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 response_id:
- raise ValueError(f"Expected a non-empty value for `response_id` but received {response_id!r}")
- extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
- return await self._get(
- f"/accounts/{account_id}/urlscanner/v2/responses/{response_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=str,
- )
-
-
-class ResponsesResourceWithRawResponse:
- def __init__(self, responses: ResponsesResource) -> None:
- self._responses = responses
-
- self.get = to_raw_response_wrapper(
- responses.get,
- )
-
-
-class AsyncResponsesResourceWithRawResponse:
- def __init__(self, responses: AsyncResponsesResource) -> None:
- self._responses = responses
-
- self.get = async_to_raw_response_wrapper(
- responses.get,
- )
-
-
-class ResponsesResourceWithStreamingResponse:
- def __init__(self, responses: ResponsesResource) -> None:
- self._responses = responses
-
- self.get = to_streamed_response_wrapper(
- responses.get,
- )
-
-
-class AsyncResponsesResourceWithStreamingResponse:
- def __init__(self, responses: AsyncResponsesResource) -> None:
- self._responses = responses
-
- self.get = async_to_streamed_response_wrapper(
- responses.get,
- )
diff --git a/src/cloudflare/resources/url_scanner/scans.py b/src/cloudflare/resources/url_scanner/scans.py
deleted file mode 100644
index a060414acce..00000000000
--- a/src/cloudflare/resources/url_scanner/scans.py
+++ /dev/null
@@ -1,884 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Dict, List, Type, Iterable, cast
-from typing_extensions import Literal
-
-import httpx
-
-from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
-from ..._utils import (
- maybe_transform,
- async_maybe_transform,
-)
-from ..._compat import cached_property
-from ..._resource import SyncAPIResource, AsyncAPIResource
-from ..._response import (
- BinaryAPIResponse,
- AsyncBinaryAPIResponse,
- StreamedBinaryAPIResponse,
- AsyncStreamedBinaryAPIResponse,
- to_raw_response_wrapper,
- to_streamed_response_wrapper,
- async_to_raw_response_wrapper,
- to_custom_raw_response_wrapper,
- async_to_streamed_response_wrapper,
- to_custom_streamed_response_wrapper,
- async_to_custom_raw_response_wrapper,
- async_to_custom_streamed_response_wrapper,
-)
-from ..._wrappers import ResultWrapper
-from ..._base_client import make_request_options
-from ...types.url_scanner import scan_list_params, scan_create_params, scan_screenshot_params, scan_bulk_create_params
-from ...types.url_scanner.scan_get_response import ScanGetResponse
-from ...types.url_scanner.scan_har_response import ScanHARResponse
-from ...types.url_scanner.scan_list_response import ScanListResponse
-from ...types.url_scanner.scan_create_response import ScanCreateResponse
-from ...types.url_scanner.scan_bulk_create_response import ScanBulkCreateResponse
-
-__all__ = ["ScansResource", "AsyncScansResource"]
-
-
-class ScansResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ScansResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 ScansResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ScansResourceWithStreamingResponse:
- """
- 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 ScansResourceWithStreamingResponse(self)
-
- def create(
- self,
- account_id: str,
- *,
- url: str,
- customagent: str | NotGiven = NOT_GIVEN,
- custom_headers: Dict[str, str] | NotGiven = NOT_GIVEN,
- referer: str | NotGiven = NOT_GIVEN,
- screenshots_resolutions: List[Literal["desktop", "mobile", "tablet"]] | NotGiven = NOT_GIVEN,
- visibility: Literal["Public", "Unlisted"] | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> str:
- """Submit a URL to scan.
-
- Check limits at
- https://developers.cloudflare.com/security-center/investigate/scan-limits/.
-
- Args:
- account_id: Account Id.
-
- custom_headers: Set custom headers.
-
- screenshots_resolutions: Take multiple screenshots targeting different device types.
-
- visibility: The option `Public` means it will be included in listings like recent scans and
- search results. `Unlisted` means it will not be included in the aforementioned
- listings, users will need to have the scan's ID to access it. A a scan will be
- automatically marked as unlisted if it fails, if it contains potential PII or
- other sensitive material.
-
- 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}/urlscanner/v2/scan",
- body=maybe_transform(
- {
- "url": url,
- "customagent": customagent,
- "custom_headers": custom_headers,
- "referer": referer,
- "screenshots_resolutions": screenshots_resolutions,
- "visibility": visibility,
- },
- scan_create_params.ScanCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ScanCreateResponse]._unwrapper,
- ),
- cast_to=cast(Type[str], ResultWrapper[str]),
- )
-
- def list(
- self,
- account_id: str,
- *,
- q: str | NotGiven = NOT_GIVEN,
- size: int | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> ScanListResponse:
- """Use a subset of ElasticSearch Query syntax to filter scans.
-
- Some example
- queries:
- 'page.domain:microsoft AND verdicts.malicious:true AND NOT
- page.domain:microsoft.com': malicious scans whose hostname starts with
- "microsoft".
- 'apikey:me AND date:[2024-01 TO 2024-10]': my scans from 2024
- January to 2024 October.
- 'page.domain:(blogspot OR www.blogspot)':
- Searches for scans whose main domain starts with "blogspot" or with
- "www.blogspot"
- 'date:>now-7d AND path:okta-sign-in.min.js: scans from the
- last 7 days with any request path that ends with "okta-sign-in.min.js"
-
- 'page.asn:AS24940 AND hash:xxx': Websites hosted in AS24940 where a resource
- with the given hash was downloaded.
-
- Args:
- account_id: Account Id.
-
- q: Filter scans
-
- size: Limit the number of objects in the response.
-
- 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(
- f"/accounts/{account_id}/urlscanner/v2/search",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "q": q,
- "size": size,
- },
- scan_list_params.ScanListParams,
- ),
- ),
- cast_to=ScanListResponse,
- )
-
- def bulk_create(
- self,
- account_id: str,
- *,
- body: Iterable[scan_bulk_create_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,
- ) -> ScanBulkCreateResponse:
- """Submit URLs to scan.
-
- Check limits at
- https://developers.cloudflare.com/security-center/investigate/scan-limits/ and
- take into account scans submitted in bulk have lower priority and may take
- longer to finish.
-
- Args:
- account_id: Account Id.
-
- body: List of urls to scan (up to a 100).
-
- 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}/urlscanner/v2/bulk",
- body=maybe_transform(body, Iterable[scan_bulk_create_params.Body]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanBulkCreateResponse,
- )
-
- def dom(
- self,
- scan_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,
- ) -> str:
- """
- Returns a plain text response, with the scan's DOM content as rendered by
- Chrome.
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
- return self._get(
- f"/accounts/{account_id}/urlscanner/v2/dom/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=str,
- )
-
- def get(
- self,
- scan_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,
- ) -> ScanGetResponse:
- """
- Get URL scan by uuid
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- return self._get(
- f"/accounts/{account_id}/urlscanner/v2/result/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanGetResponse,
- )
-
- def har(
- self,
- scan_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,
- ) -> ScanHARResponse:
- """Get a URL scan's HAR file.
-
- See HAR spec at
- http://www.softwareishard.com/blog/har-12-spec/.
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- return self._get(
- f"/accounts/{account_id}/urlscanner/v2/har/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanHARResponse,
- )
-
- def screenshot(
- self,
- scan_id: str,
- *,
- account_id: str,
- resolution: Literal["desktop", "mobile", "tablet"] | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> BinaryAPIResponse:
- """
- Get scan's screenshot by resolution (desktop/mobile/tablet).
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- resolution: Target device type.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- extra_headers = {"Accept": "image/png", **(extra_headers or {})}
- return self._get(
- f"/accounts/{account_id}/urlscanner/v2/screenshots/{scan_id}.png",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform({"resolution": resolution}, scan_screenshot_params.ScanScreenshotParams),
- ),
- cast_to=BinaryAPIResponse,
- )
-
-
-class AsyncScansResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncScansResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 AsyncScansResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncScansResourceWithStreamingResponse:
- """
- 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 AsyncScansResourceWithStreamingResponse(self)
-
- async def create(
- self,
- account_id: str,
- *,
- url: str,
- customagent: str | NotGiven = NOT_GIVEN,
- custom_headers: Dict[str, str] | NotGiven = NOT_GIVEN,
- referer: str | NotGiven = NOT_GIVEN,
- screenshots_resolutions: List[Literal["desktop", "mobile", "tablet"]] | NotGiven = NOT_GIVEN,
- visibility: Literal["Public", "Unlisted"] | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> str:
- """Submit a URL to scan.
-
- Check limits at
- https://developers.cloudflare.com/security-center/investigate/scan-limits/.
-
- Args:
- account_id: Account Id.
-
- custom_headers: Set custom headers.
-
- screenshots_resolutions: Take multiple screenshots targeting different device types.
-
- visibility: The option `Public` means it will be included in listings like recent scans and
- search results. `Unlisted` means it will not be included in the aforementioned
- listings, users will need to have the scan's ID to access it. A a scan will be
- automatically marked as unlisted if it fails, if it contains potential PII or
- other sensitive material.
-
- 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}/urlscanner/v2/scan",
- body=await async_maybe_transform(
- {
- "url": url,
- "customagent": customagent,
- "custom_headers": custom_headers,
- "referer": referer,
- "screenshots_resolutions": screenshots_resolutions,
- "visibility": visibility,
- },
- scan_create_params.ScanCreateParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- post_parser=ResultWrapper[ScanCreateResponse]._unwrapper,
- ),
- cast_to=cast(Type[str], ResultWrapper[str]),
- )
-
- async def list(
- self,
- account_id: str,
- *,
- q: str | NotGiven = NOT_GIVEN,
- size: int | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> ScanListResponse:
- """Use a subset of ElasticSearch Query syntax to filter scans.
-
- Some example
- queries:
- 'page.domain:microsoft AND verdicts.malicious:true AND NOT
- page.domain:microsoft.com': malicious scans whose hostname starts with
- "microsoft".
- 'apikey:me AND date:[2024-01 TO 2024-10]': my scans from 2024
- January to 2024 October.
- 'page.domain:(blogspot OR www.blogspot)':
- Searches for scans whose main domain starts with "blogspot" or with
- "www.blogspot"
- 'date:>now-7d AND path:okta-sign-in.min.js: scans from the
- last 7 days with any request path that ends with "okta-sign-in.min.js"
-
- 'page.asn:AS24940 AND hash:xxx': Websites hosted in AS24940 where a resource
- with the given hash was downloaded.
-
- Args:
- account_id: Account Id.
-
- q: Filter scans
-
- size: Limit the number of objects in the response.
-
- 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._get(
- f"/accounts/{account_id}/urlscanner/v2/search",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform(
- {
- "q": q,
- "size": size,
- },
- scan_list_params.ScanListParams,
- ),
- ),
- cast_to=ScanListResponse,
- )
-
- async def bulk_create(
- self,
- account_id: str,
- *,
- body: Iterable[scan_bulk_create_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,
- ) -> ScanBulkCreateResponse:
- """Submit URLs to scan.
-
- Check limits at
- https://developers.cloudflare.com/security-center/investigate/scan-limits/ and
- take into account scans submitted in bulk have lower priority and may take
- longer to finish.
-
- Args:
- account_id: Account Id.
-
- body: List of urls to scan (up to a 100).
-
- 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}/urlscanner/v2/bulk",
- body=await async_maybe_transform(body, Iterable[scan_bulk_create_params.Body]),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanBulkCreateResponse,
- )
-
- async def dom(
- self,
- scan_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,
- ) -> str:
- """
- Returns a plain text response, with the scan's DOM content as rendered by
- Chrome.
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
- return await self._get(
- f"/accounts/{account_id}/urlscanner/v2/dom/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=str,
- )
-
- async def get(
- self,
- scan_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,
- ) -> ScanGetResponse:
- """
- Get URL scan by uuid
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- return await self._get(
- f"/accounts/{account_id}/urlscanner/v2/result/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanGetResponse,
- )
-
- async def har(
- self,
- scan_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,
- ) -> ScanHARResponse:
- """Get a URL scan's HAR file.
-
- See HAR spec at
- http://www.softwareishard.com/blog/har-12-spec/.
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- return await self._get(
- f"/accounts/{account_id}/urlscanner/v2/har/{scan_id}",
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ScanHARResponse,
- )
-
- async def screenshot(
- self,
- scan_id: str,
- *,
- account_id: str,
- resolution: Literal["desktop", "mobile", "tablet"] | NotGiven = NOT_GIVEN,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncBinaryAPIResponse:
- """
- Get scan's screenshot by resolution (desktop/mobile/tablet).
-
- Args:
- account_id: Account Id.
-
- scan_id: Scan uuid.
-
- resolution: Target device type.
-
- 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 scan_id:
- raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
- extra_headers = {"Accept": "image/png", **(extra_headers or {})}
- return await self._get(
- f"/accounts/{account_id}/urlscanner/v2/screenshots/{scan_id}.png",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform(
- {"resolution": resolution}, scan_screenshot_params.ScanScreenshotParams
- ),
- ),
- cast_to=AsyncBinaryAPIResponse,
- )
-
-
-class ScansResourceWithRawResponse:
- def __init__(self, scans: ScansResource) -> None:
- self._scans = scans
-
- self.create = to_raw_response_wrapper(
- scans.create,
- )
- self.list = to_raw_response_wrapper(
- scans.list,
- )
- self.bulk_create = to_raw_response_wrapper(
- scans.bulk_create,
- )
- self.dom = to_raw_response_wrapper(
- scans.dom,
- )
- self.get = to_raw_response_wrapper(
- scans.get,
- )
- self.har = to_raw_response_wrapper(
- scans.har,
- )
- self.screenshot = to_custom_raw_response_wrapper(
- scans.screenshot,
- BinaryAPIResponse,
- )
-
-
-class AsyncScansResourceWithRawResponse:
- def __init__(self, scans: AsyncScansResource) -> None:
- self._scans = scans
-
- self.create = async_to_raw_response_wrapper(
- scans.create,
- )
- self.list = async_to_raw_response_wrapper(
- scans.list,
- )
- self.bulk_create = async_to_raw_response_wrapper(
- scans.bulk_create,
- )
- self.dom = async_to_raw_response_wrapper(
- scans.dom,
- )
- self.get = async_to_raw_response_wrapper(
- scans.get,
- )
- self.har = async_to_raw_response_wrapper(
- scans.har,
- )
- self.screenshot = async_to_custom_raw_response_wrapper(
- scans.screenshot,
- AsyncBinaryAPIResponse,
- )
-
-
-class ScansResourceWithStreamingResponse:
- def __init__(self, scans: ScansResource) -> None:
- self._scans = scans
-
- self.create = to_streamed_response_wrapper(
- scans.create,
- )
- self.list = to_streamed_response_wrapper(
- scans.list,
- )
- self.bulk_create = to_streamed_response_wrapper(
- scans.bulk_create,
- )
- self.dom = to_streamed_response_wrapper(
- scans.dom,
- )
- self.get = to_streamed_response_wrapper(
- scans.get,
- )
- self.har = to_streamed_response_wrapper(
- scans.har,
- )
- self.screenshot = to_custom_streamed_response_wrapper(
- scans.screenshot,
- StreamedBinaryAPIResponse,
- )
-
-
-class AsyncScansResourceWithStreamingResponse:
- def __init__(self, scans: AsyncScansResource) -> None:
- self._scans = scans
-
- self.create = async_to_streamed_response_wrapper(
- scans.create,
- )
- self.list = async_to_streamed_response_wrapper(
- scans.list,
- )
- self.bulk_create = async_to_streamed_response_wrapper(
- scans.bulk_create,
- )
- self.dom = async_to_streamed_response_wrapper(
- scans.dom,
- )
- self.get = async_to_streamed_response_wrapper(
- scans.get,
- )
- self.har = async_to_streamed_response_wrapper(
- scans.har,
- )
- self.screenshot = async_to_custom_streamed_response_wrapper(
- scans.screenshot,
- AsyncStreamedBinaryAPIResponse,
- )
diff --git a/src/cloudflare/resources/url_scanner/url_scanner.py b/src/cloudflare/resources/url_scanner/url_scanner.py
deleted file mode 100644
index 599de25507c..00000000000
--- a/src/cloudflare/resources/url_scanner/url_scanner.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from .scans import (
- ScansResource,
- AsyncScansResource,
- ScansResourceWithRawResponse,
- AsyncScansResourceWithRawResponse,
- ScansResourceWithStreamingResponse,
- AsyncScansResourceWithStreamingResponse,
-)
-from ..._compat import cached_property
-from .responses import (
- ResponsesResource,
- AsyncResponsesResource,
- ResponsesResourceWithRawResponse,
- AsyncResponsesResourceWithRawResponse,
- ResponsesResourceWithStreamingResponse,
- AsyncResponsesResourceWithStreamingResponse,
-)
-from ..._resource import SyncAPIResource, AsyncAPIResource
-
-__all__ = ["URLScannerResource", "AsyncURLScannerResource"]
-
-
-class URLScannerResource(SyncAPIResource):
- @cached_property
- def responses(self) -> ResponsesResource:
- return ResponsesResource(self._client)
-
- @cached_property
- def scans(self) -> ScansResource:
- return ScansResource(self._client)
-
- @cached_property
- def with_raw_response(self) -> URLScannerResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 URLScannerResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> URLScannerResourceWithStreamingResponse:
- """
- 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 URLScannerResourceWithStreamingResponse(self)
-
-
-class AsyncURLScannerResource(AsyncAPIResource):
- @cached_property
- def responses(self) -> AsyncResponsesResource:
- return AsyncResponsesResource(self._client)
-
- @cached_property
- def scans(self) -> AsyncScansResource:
- return AsyncScansResource(self._client)
-
- @cached_property
- def with_raw_response(self) -> AsyncURLScannerResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return the
- 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 AsyncURLScannerResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncURLScannerResourceWithStreamingResponse:
- """
- 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 AsyncURLScannerResourceWithStreamingResponse(self)
-
-
-class URLScannerResourceWithRawResponse:
- def __init__(self, url_scanner: URLScannerResource) -> None:
- self._url_scanner = url_scanner
-
- @cached_property
- def responses(self) -> ResponsesResourceWithRawResponse:
- return ResponsesResourceWithRawResponse(self._url_scanner.responses)
-
- @cached_property
- def scans(self) -> ScansResourceWithRawResponse:
- return ScansResourceWithRawResponse(self._url_scanner.scans)
-
-
-class AsyncURLScannerResourceWithRawResponse:
- def __init__(self, url_scanner: AsyncURLScannerResource) -> None:
- self._url_scanner = url_scanner
-
- @cached_property
- def responses(self) -> AsyncResponsesResourceWithRawResponse:
- return AsyncResponsesResourceWithRawResponse(self._url_scanner.responses)
-
- @cached_property
- def scans(self) -> AsyncScansResourceWithRawResponse:
- return AsyncScansResourceWithRawResponse(self._url_scanner.scans)
-
-
-class URLScannerResourceWithStreamingResponse:
- def __init__(self, url_scanner: URLScannerResource) -> None:
- self._url_scanner = url_scanner
-
- @cached_property
- def responses(self) -> ResponsesResourceWithStreamingResponse:
- return ResponsesResourceWithStreamingResponse(self._url_scanner.responses)
-
- @cached_property
- def scans(self) -> ScansResourceWithStreamingResponse:
- return ScansResourceWithStreamingResponse(self._url_scanner.scans)
-
-
-class AsyncURLScannerResourceWithStreamingResponse:
- def __init__(self, url_scanner: AsyncURLScannerResource) -> None:
- self._url_scanner = url_scanner
-
- @cached_property
- def responses(self) -> AsyncResponsesResourceWithStreamingResponse:
- return AsyncResponsesResourceWithStreamingResponse(self._url_scanner.responses)
-
- @cached_property
- def scans(self) -> AsyncScansResourceWithStreamingResponse:
- return AsyncScansResourceWithStreamingResponse(self._url_scanner.scans)
diff --git a/src/cloudflare/types/url_scanner/__init__.py b/src/cloudflare/types/url_scanner/__init__.py
index 988295382a6..f8ee8b14b1c 100644
--- a/src/cloudflare/types/url_scanner/__init__.py
+++ b/src/cloudflare/types/url_scanner/__init__.py
@@ -1,15 +1,3 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from __future__ import annotations
-
-from .scan_list_params import ScanListParams as ScanListParams
-from .scan_dom_response import ScanDOMResponse as ScanDOMResponse
-from .scan_get_response import ScanGetResponse as ScanGetResponse
-from .scan_har_response import ScanHARResponse as ScanHARResponse
-from .scan_create_params import ScanCreateParams as ScanCreateParams
-from .scan_list_response import ScanListResponse as ScanListResponse
-from .scan_create_response import ScanCreateResponse as ScanCreateResponse
-from .response_get_response import ResponseGetResponse as ResponseGetResponse
-from .scan_screenshot_params import ScanScreenshotParams as ScanScreenshotParams
-from .scan_bulk_create_params import ScanBulkCreateParams as ScanBulkCreateParams
-from .scan_bulk_create_response import ScanBulkCreateResponse as ScanBulkCreateResponse
diff --git a/src/cloudflare/types/url_scanner/response_get_response.py b/src/cloudflare/types/url_scanner/response_get_response.py
deleted file mode 100644
index c2215a79037..00000000000
--- a/src/cloudflare/types/url_scanner/response_get_response.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing_extensions import TypeAlias
-
-__all__ = ["ResponseGetResponse"]
-
-ResponseGetResponse: TypeAlias = str
diff --git a/src/cloudflare/types/url_scanner/scan_bulk_create_params.py b/src/cloudflare/types/url_scanner/scan_bulk_create_params.py
deleted file mode 100644
index 8bdd2ef9263..00000000000
--- a/src/cloudflare/types/url_scanner/scan_bulk_create_params.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Dict, List, Iterable
-from typing_extensions import Literal, Required, Annotated, TypedDict
-
-from ..._utils import PropertyInfo
-
-__all__ = ["ScanBulkCreateParams", "Body"]
-
-
-class ScanBulkCreateParams(TypedDict, total=False):
- body: Required[Iterable[Body]]
- """List of urls to scan (up to a 100)."""
-
-
-class Body(TypedDict, total=False):
- url: Required[str]
-
- customagent: str
-
- custom_headers: Annotated[Dict[str, str], PropertyInfo(alias="customHeaders")]
- """Set custom headers."""
-
- referer: str
-
- screenshots_resolutions: Annotated[
- List[Literal["desktop", "mobile", "tablet"]], PropertyInfo(alias="screenshotsResolutions")
- ]
- """Take multiple screenshots targeting different device types."""
-
- visibility: Literal["Public", "Unlisted"]
- """
- The option `Public` means it will be included in listings like recent scans and
- search results. `Unlisted` means it will not be included in the aforementioned
- listings, users will need to have the scan's ID to access it. A a scan will be
- automatically marked as unlisted if it fails, if it contains potential PII or
- other sensitive material.
- """
diff --git a/src/cloudflare/types/url_scanner/scan_bulk_create_response.py b/src/cloudflare/types/url_scanner/scan_bulk_create_response.py
deleted file mode 100644
index 6a554a9878b..00000000000
--- a/src/cloudflare/types/url_scanner/scan_bulk_create_response.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-from typing_extensions import TypeAlias
-
-from ..._models import BaseModel
-
-__all__ = ["ScanBulkCreateResponse", "ScanBulkCreateResponseItem", "ScanBulkCreateResponseItemOptions"]
-
-
-class ScanBulkCreateResponseItemOptions(BaseModel):
- useragent: Optional[str] = None
-
-
-class ScanBulkCreateResponseItem(BaseModel):
- api: str
- """URL to api report."""
-
- result: str
- """URL to report."""
-
- url: str
- """Submitted URL"""
-
- uuid: str
- """Scan ID."""
-
- visibility: str
- """Submitted visibility status."""
-
- options: Optional[ScanBulkCreateResponseItemOptions] = None
-
-
-ScanBulkCreateResponse: TypeAlias = List[ScanBulkCreateResponseItem]
diff --git a/src/cloudflare/types/url_scanner/scan_create_params.py b/src/cloudflare/types/url_scanner/scan_create_params.py
deleted file mode 100644
index 16a71092669..00000000000
--- a/src/cloudflare/types/url_scanner/scan_create_params.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import Dict, List
-from typing_extensions import Literal, Required, Annotated, TypedDict
-
-from ..._utils import PropertyInfo
-
-__all__ = ["ScanCreateParams"]
-
-
-class ScanCreateParams(TypedDict, total=False):
- url: Required[str]
-
- customagent: str
-
- custom_headers: Annotated[Dict[str, str], PropertyInfo(alias="customHeaders")]
- """Set custom headers."""
-
- referer: str
-
- screenshots_resolutions: Annotated[
- List[Literal["desktop", "mobile", "tablet"]], PropertyInfo(alias="screenshotsResolutions")
- ]
- """Take multiple screenshots targeting different device types."""
-
- visibility: Literal["Public", "Unlisted"]
- """
- The option `Public` means it will be included in listings like recent scans and
- search results. `Unlisted` means it will not be included in the aforementioned
- listings, users will need to have the scan's ID to access it. A a scan will be
- automatically marked as unlisted if it fails, if it contains potential PII or
- other sensitive material.
- """
diff --git a/src/cloudflare/types/url_scanner/scan_create_response.py b/src/cloudflare/types/url_scanner/scan_create_response.py
deleted file mode 100644
index 4534ad1039a..00000000000
--- a/src/cloudflare/types/url_scanner/scan_create_response.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing_extensions import TypeAlias
-
-__all__ = ["ScanCreateResponse"]
-
-ScanCreateResponse: TypeAlias = str
diff --git a/src/cloudflare/types/url_scanner/scan_dom_response.py b/src/cloudflare/types/url_scanner/scan_dom_response.py
deleted file mode 100644
index 3d53cb81dbf..00000000000
--- a/src/cloudflare/types/url_scanner/scan_dom_response.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing_extensions import TypeAlias
-
-__all__ = ["ScanDOMResponse"]
-
-ScanDOMResponse: TypeAlias = str
diff --git a/src/cloudflare/types/url_scanner/scan_get_response.py b/src/cloudflare/types/url_scanner/scan_get_response.py
deleted file mode 100644
index 8d1ef4a39e0..00000000000
--- a/src/cloudflare/types/url_scanner/scan_get_response.py
+++ /dev/null
@@ -1,859 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-
-from pydantic import Field as FieldInfo
-
-from ..._models import BaseModel
-
-__all__ = [
- "ScanGetResponse",
- "Data",
- "DataConsole",
- "DataConsoleMessage",
- "DataCookie",
- "DataGlobal",
- "DataLink",
- "DataPerformance",
- "DataRequest",
- "DataRequestRequest",
- "DataRequestRequestInitiator",
- "DataRequestRequestRequest",
- "DataRequestRequestRedirectResponse",
- "DataRequestRequestRedirectResponseSecurityHeader",
- "DataRequestResponse",
- "DataRequestResponseASN",
- "DataRequestResponseGeoip",
- "DataRequestResponseResponse",
- "DataRequestResponseResponseSecurityDetails",
- "DataRequestResponseResponseSecurityHeader",
- "Lists",
- "ListsCertificate",
- "Meta",
- "MetaProcessors",
- "MetaProcessorsASN",
- "MetaProcessorsASNData",
- "MetaProcessorsDNS",
- "MetaProcessorsDNSData",
- "MetaProcessorsDomainCategories",
- "MetaProcessorsDomainCategoriesData",
- "MetaProcessorsGeoip",
- "MetaProcessorsGeoipData",
- "MetaProcessorsGeoipDataGeoip",
- "MetaProcessorsPhishing",
- "MetaProcessorsRadarRank",
- "MetaProcessorsRadarRankData",
- "MetaProcessorsWappa",
- "MetaProcessorsWappaData",
- "MetaProcessorsWappaDataCategory",
- "MetaProcessorsWappaDataConfidence",
- "MetaProcessorsURLCategories",
- "MetaProcessorsURLCategoriesData",
- "MetaProcessorsURLCategoriesDataContent",
- "MetaProcessorsURLCategoriesDataInherited",
- "MetaProcessorsURLCategoriesDataInheritedContent",
- "MetaProcessorsURLCategoriesDataInheritedRisk",
- "MetaProcessorsURLCategoriesDataRisk",
- "Page",
- "PageScreenshot",
- "Scanner",
- "Stats",
- "StatsDomainStat",
- "StatsIPStat",
- "StatsIPStatASN",
- "StatsIPStatGeoip",
- "StatsProtocolStat",
- "StatsResourceStat",
- "StatsServerStat",
- "StatsTLSStat",
- "StatsTLSStatProtocols",
- "Task",
- "TaskOptions",
- "Verdicts",
- "VerdictsOverall",
-]
-
-
-class DataConsoleMessage(BaseModel):
- level: str
-
- source: str
-
- text: str
-
- url: str
-
-
-class DataConsole(BaseModel):
- message: DataConsoleMessage
-
-
-class DataCookie(BaseModel):
- domain: str
-
- expires: float
-
- http_only: bool = FieldInfo(alias="httpOnly")
-
- name: str
-
- path: str
-
- priority: str
-
- same_party: bool = FieldInfo(alias="sameParty")
-
- secure: bool
-
- session: bool
-
- size: float
-
- source_port: float = FieldInfo(alias="sourcePort")
-
- source_scheme: str = FieldInfo(alias="sourceScheme")
-
- value: str
-
-
-class DataGlobal(BaseModel):
- prop: str
-
- type: str
-
-
-class DataLink(BaseModel):
- href: str
-
- text: str
-
-
-class DataPerformance(BaseModel):
- duration: float
-
- entry_type: str = FieldInfo(alias="entryType")
-
- name: str
-
- start_time: float = FieldInfo(alias="startTime")
-
-
-class DataRequestRequestInitiator(BaseModel):
- host: str
-
- type: str
-
- url: str
-
-
-class DataRequestRequestRequest(BaseModel):
- initial_priority: str = FieldInfo(alias="initialPriority")
-
- is_same_site: bool = FieldInfo(alias="isSameSite")
-
- method: str
-
- mixed_content_type: str = FieldInfo(alias="mixedContentType")
-
- referrer_policy: str = FieldInfo(alias="referrerPolicy")
-
- url: str
-
- headers: Optional[object] = None
-
-
-class DataRequestRequestRedirectResponseSecurityHeader(BaseModel):
- name: str
-
- value: str
-
-
-class DataRequestRequestRedirectResponse(BaseModel):
- charset: str
-
- mime_type: str = FieldInfo(alias="mimeType")
-
- protocol: str
-
- remote_ip_address: str = FieldInfo(alias="remoteIPAddress")
-
- remote_port: float = FieldInfo(alias="remotePort")
-
- security_headers: List[DataRequestRequestRedirectResponseSecurityHeader] = FieldInfo(alias="securityHeaders")
-
- security_state: str = FieldInfo(alias="securityState")
-
- status: float
-
- status_text: str = FieldInfo(alias="statusText")
-
- url: str
-
- headers: Optional[object] = None
-
-
-class DataRequestRequest(BaseModel):
- document_url: str = FieldInfo(alias="documentURL")
-
- has_user_gesture: bool = FieldInfo(alias="hasUserGesture")
-
- initiator: DataRequestRequestInitiator
-
- redirect_has_extra_info: bool = FieldInfo(alias="redirectHasExtraInfo")
-
- request: DataRequestRequestRequest
-
- request_id: str = FieldInfo(alias="requestId")
-
- type: str
-
- wall_time: float = FieldInfo(alias="wallTime")
-
- frame_id: Optional[str] = FieldInfo(alias="frameId", default=None)
-
- loader_id: Optional[str] = FieldInfo(alias="loaderId", default=None)
-
- primary_request: Optional[bool] = FieldInfo(alias="primaryRequest", default=None)
-
- redirect_response: Optional[DataRequestRequestRedirectResponse] = FieldInfo(alias="redirectResponse", default=None)
-
-
-class DataRequestResponseASN(BaseModel):
- asn: str
-
- country: str
-
- description: str
-
- ip: str
-
- name: str
-
- org: str
-
-
-class DataRequestResponseGeoip(BaseModel):
- city: str
-
- country: str
-
- country_name: str
-
- geoname_id: str = FieldInfo(alias="geonameId")
-
- ll: List[object]
-
- region: str
-
-
-class DataRequestResponseResponseSecurityDetails(BaseModel):
- certificate_id: float = FieldInfo(alias="certificateId")
-
- certificate_transparency_compliance: str = FieldInfo(alias="certificateTransparencyCompliance")
-
- cipher: str
-
- encrypted_client_hello: bool = FieldInfo(alias="encryptedClientHello")
-
- issuer: str
-
- key_exchange: str = FieldInfo(alias="keyExchange")
-
- key_exchange_group: str = FieldInfo(alias="keyExchangeGroup")
-
- protocol: str
-
- san_list: List[str] = FieldInfo(alias="sanList")
-
- server_signature_algorithm: float = FieldInfo(alias="serverSignatureAlgorithm")
-
- subject_name: str = FieldInfo(alias="subjectName")
-
- valid_from: float = FieldInfo(alias="validFrom")
-
- valid_to: float = FieldInfo(alias="validTo")
-
-
-class DataRequestResponseResponseSecurityHeader(BaseModel):
- name: str
-
- value: str
-
-
-class DataRequestResponseResponse(BaseModel):
- charset: str
-
- mime_type: str = FieldInfo(alias="mimeType")
-
- protocol: str
-
- remote_ip_address: str = FieldInfo(alias="remoteIPAddress")
-
- remote_port: float = FieldInfo(alias="remotePort")
-
- security_details: DataRequestResponseResponseSecurityDetails = FieldInfo(alias="securityDetails")
-
- security_headers: List[DataRequestResponseResponseSecurityHeader] = FieldInfo(alias="securityHeaders")
-
- security_state: str = FieldInfo(alias="securityState")
-
- status: float
-
- status_text: str = FieldInfo(alias="statusText")
-
- url: str
-
- headers: Optional[object] = None
-
-
-class DataRequestResponse(BaseModel):
- asn: DataRequestResponseASN
-
- data_length: float = FieldInfo(alias="dataLength")
-
- encoded_data_length: float = FieldInfo(alias="encodedDataLength")
-
- geoip: DataRequestResponseGeoip
-
- has_extra_info: bool = FieldInfo(alias="hasExtraInfo")
-
- request_id: str = FieldInfo(alias="requestId")
-
- response: DataRequestResponseResponse
-
- size: float
-
- type: str
-
- content_available: Optional[bool] = FieldInfo(alias="contentAvailable", default=None)
-
- hash: Optional[str] = None
-
-
-class DataRequest(BaseModel):
- request: DataRequestRequest
-
- response: DataRequestResponse
-
- requests: Optional[List[DataRequestRequest]] = None
-
-
-class Data(BaseModel):
- console: List[DataConsole]
-
- cookies: List[DataCookie]
-
- globals: List[DataGlobal]
-
- links: List[DataLink]
-
- performance: List[DataPerformance]
-
- requests: List[DataRequest]
-
-
-class ListsCertificate(BaseModel):
- issuer: str
-
- subject_name: str = FieldInfo(alias="subjectName")
-
- valid_from: float = FieldInfo(alias="validFrom")
-
- valid_to: float = FieldInfo(alias="validTo")
-
-
-class Lists(BaseModel):
- asns: List[str]
-
- certificates: List[ListsCertificate]
-
- continents: List[str]
-
- countries: List[str]
-
- domains: List[str]
-
- hashes: List[str]
-
- ips: List[str]
-
- link_domains: List[str] = FieldInfo(alias="linkDomains")
-
- servers: List[str]
-
- urls: List[str]
-
-
-class MetaProcessorsASNData(BaseModel):
- asn: str
-
- country: str
-
- description: str
-
- ip: str
-
- name: str
-
-
-class MetaProcessorsASN(BaseModel):
- data: List[MetaProcessorsASNData]
-
-
-class MetaProcessorsDNSData(BaseModel):
- address: str
-
- dnssec_valid: bool
-
- name: str
-
- type: str
-
-
-class MetaProcessorsDNS(BaseModel):
- data: List[MetaProcessorsDNSData]
-
-
-class MetaProcessorsDomainCategoriesData(BaseModel):
- inherited: object
-
- is_primary: bool = FieldInfo(alias="isPrimary")
-
- name: str
-
-
-class MetaProcessorsDomainCategories(BaseModel):
- data: List[MetaProcessorsDomainCategoriesData]
-
-
-class MetaProcessorsGeoipDataGeoip(BaseModel):
- city: str
-
- country: str
-
- country_name: str
-
- ll: List[float]
-
- region: str
-
-
-class MetaProcessorsGeoipData(BaseModel):
- geoip: MetaProcessorsGeoipDataGeoip
-
- ip: str
-
-
-class MetaProcessorsGeoip(BaseModel):
- data: List[MetaProcessorsGeoipData]
-
-
-class MetaProcessorsPhishing(BaseModel):
- data: List[str]
-
-
-class MetaProcessorsRadarRankData(BaseModel):
- bucket: str
-
- hostname: str
-
- rank: Optional[float] = None
-
-
-class MetaProcessorsRadarRank(BaseModel):
- data: List[MetaProcessorsRadarRankData]
-
-
-class MetaProcessorsWappaDataCategory(BaseModel):
- name: str
-
- priority: float
-
-
-class MetaProcessorsWappaDataConfidence(BaseModel):
- confidence: float
-
- name: str
-
- pattern: str
-
- pattern_type: str = FieldInfo(alias="patternType")
-
-
-class MetaProcessorsWappaData(BaseModel):
- app: str
-
- categories: List[MetaProcessorsWappaDataCategory]
-
- confidence: List[MetaProcessorsWappaDataConfidence]
-
- confidence_total: float = FieldInfo(alias="confidenceTotal")
-
- icon: str
-
- website: str
-
-
-class MetaProcessorsWappa(BaseModel):
- data: List[MetaProcessorsWappaData]
-
-
-class MetaProcessorsURLCategoriesDataContent(BaseModel):
- id: float
-
- name: str
-
- super_category_id: float
-
-
-class MetaProcessorsURLCategoriesDataInheritedContent(BaseModel):
- id: float
-
- name: str
-
- super_category_id: float
-
-
-class MetaProcessorsURLCategoriesDataInheritedRisk(BaseModel):
- id: float
-
- name: str
-
- super_category_id: float
-
-
-class MetaProcessorsURLCategoriesDataInherited(BaseModel):
- content: List[MetaProcessorsURLCategoriesDataInheritedContent]
-
- from_: str = FieldInfo(alias="from")
-
- risks: List[MetaProcessorsURLCategoriesDataInheritedRisk]
-
-
-class MetaProcessorsURLCategoriesDataRisk(BaseModel):
- id: float
-
- name: str
-
- super_category_id: float
-
-
-class MetaProcessorsURLCategoriesData(BaseModel):
- content: List[MetaProcessorsURLCategoriesDataContent]
-
- inherited: MetaProcessorsURLCategoriesDataInherited
-
- name: str
-
- risks: List[MetaProcessorsURLCategoriesDataRisk]
-
-
-class MetaProcessorsURLCategories(BaseModel):
- data: List[MetaProcessorsURLCategoriesData]
-
-
-class MetaProcessors(BaseModel):
- asn: MetaProcessorsASN
-
- dns: MetaProcessorsDNS
-
- domain_categories: MetaProcessorsDomainCategories = FieldInfo(alias="domainCategories")
-
- geoip: MetaProcessorsGeoip
-
- phishing: MetaProcessorsPhishing
-
- radar_rank: MetaProcessorsRadarRank = FieldInfo(alias="radarRank")
-
- wappa: MetaProcessorsWappa
-
- url_categories: Optional[MetaProcessorsURLCategories] = FieldInfo(alias="urlCategories", default=None)
-
-
-class Meta(BaseModel):
- processors: MetaProcessors
-
-
-class PageScreenshot(BaseModel):
- dhash: str
-
- mm3_hash: float = FieldInfo(alias="mm3Hash")
-
- name: str
-
- phash: str
-
-
-class Page(BaseModel):
- apex_domain: str = FieldInfo(alias="apexDomain")
-
- asn: str
-
- asnname: str
-
- city: str
-
- country: str
-
- domain: str
-
- ip: str
-
- mime_type: str = FieldInfo(alias="mimeType")
-
- server: str
-
- status: str
-
- title: str
-
- tls_age_days: float = FieldInfo(alias="tlsAgeDays")
-
- tls_issuer: str = FieldInfo(alias="tlsIssuer")
-
- tls_valid_days: float = FieldInfo(alias="tlsValidDays")
-
- tls_valid_from: str = FieldInfo(alias="tlsValidFrom")
-
- url: str
-
- screenshot: Optional[PageScreenshot] = None
-
-
-class Scanner(BaseModel):
- colo: str
-
- country: str
-
-
-class StatsDomainStat(BaseModel):
- count: float
-
- countries: List[str]
-
- domain: str
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- index: float
-
- initiators: List[str]
-
- ips: List[str]
-
- redirects: float
-
- size: float
-
-
-class StatsIPStatASN(BaseModel):
- asn: str
-
- country: str
-
- description: str
-
- ip: str
-
- name: str
-
- org: str
-
-
-class StatsIPStatGeoip(BaseModel):
- city: str
-
- country: str
-
- country_name: str
-
- ll: List[float]
-
- region: str
-
-
-class StatsIPStat(BaseModel):
- asn: StatsIPStatASN
-
- countries: List[str]
-
- domains: List[str]
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- geoip: StatsIPStatGeoip
-
- index: float
-
- ip: str
-
- ipv6: bool
-
- redirects: float
-
- requests: float
-
- size: float
-
- count: Optional[float] = None
-
-
-class StatsProtocolStat(BaseModel):
- count: float
-
- countries: List[str]
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- ips: List[str]
-
- protocol: str
-
- size: float
-
-
-class StatsResourceStat(BaseModel):
- compression: float
-
- count: float
-
- countries: List[str]
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- ips: List[str]
-
- percentage: float
-
- size: float
-
- type: str
-
-
-class StatsServerStat(BaseModel):
- count: float
-
- countries: List[str]
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- ips: List[str]
-
- server: str
-
- size: float
-
-
-class StatsTLSStatProtocols(BaseModel):
- tls_1_3_aes_128_gcm: float = FieldInfo(alias="TLS 1.3 / AES_128_GCM")
-
-
-class StatsTLSStat(BaseModel):
- count: float
-
- countries: List[str]
-
- encoded_size: float = FieldInfo(alias="encodedSize")
-
- ips: List[str]
-
- protocols: StatsTLSStatProtocols
-
- security_state: str = FieldInfo(alias="securityState")
-
- size: float
-
-
-class Stats(BaseModel):
- domain_stats: List[StatsDomainStat] = FieldInfo(alias="domainStats")
-
- ip_stats: List[StatsIPStat] = FieldInfo(alias="ipStats")
-
- i_pv6_percentage: float = FieldInfo(alias="IPv6Percentage")
-
- malicious: float
-
- protocol_stats: List[StatsProtocolStat] = FieldInfo(alias="protocolStats")
-
- resource_stats: List[StatsResourceStat] = FieldInfo(alias="resourceStats")
-
- secure_percentage: float = FieldInfo(alias="securePercentage")
-
- secure_requests: float = FieldInfo(alias="secureRequests")
-
- server_stats: List[StatsServerStat] = FieldInfo(alias="serverStats")
-
- tls_stats: List[StatsTLSStat] = FieldInfo(alias="tlsStats")
-
- total_links: float = FieldInfo(alias="totalLinks")
-
- uniq_asns: float = FieldInfo(alias="uniqASNs")
-
- uniq_countries: float = FieldInfo(alias="uniqCountries")
-
-
-class TaskOptions(BaseModel):
- custom_headers: Optional[object] = FieldInfo(alias="customHeaders", default=None)
- """Custom headers set."""
-
- screenshots_resolutions: Optional[List[str]] = FieldInfo(alias="screenshotsResolutions", default=None)
-
-
-class Task(BaseModel):
- apex_domain: str = FieldInfo(alias="apexDomain")
-
- domain: str
-
- dom_url: str = FieldInfo(alias="domURL")
-
- method: str
-
- options: TaskOptions
-
- report_url: str = FieldInfo(alias="reportURL")
-
- screenshot_url: str = FieldInfo(alias="screenshotURL")
-
- source: str
-
- success: bool
-
- time: str
-
- url: str
-
- uuid: str
-
- visibility: str
-
-
-class VerdictsOverall(BaseModel):
- categories: List[str]
-
- has_verdicts: bool = FieldInfo(alias="hasVerdicts")
-
- malicious: bool
-
- tags: List[str]
-
-
-class Verdicts(BaseModel):
- overall: VerdictsOverall
-
-
-class ScanGetResponse(BaseModel):
- data: Data
-
- lists: Lists
-
- meta: Meta
-
- page: Page
-
- scanner: Scanner
-
- stats: Stats
-
- task: Task
-
- verdicts: Verdicts
diff --git a/src/cloudflare/types/url_scanner/scan_har_response.py b/src/cloudflare/types/url_scanner/scan_har_response.py
deleted file mode 100644
index 2a4f344de77..00000000000
--- a/src/cloudflare/types/url_scanner/scan_har_response.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-
-from pydantic import Field as FieldInfo
-
-from ..._models import BaseModel
-
-__all__ = [
- "ScanHARResponse",
- "Log",
- "LogCreator",
- "LogEntry",
- "LogEntryRequest",
- "LogEntryRequestHeader",
- "LogEntryResponse",
- "LogEntryResponseContent",
- "LogEntryResponseHeader",
- "LogPage",
- "LogPagePageTimings",
-]
-
-
-class LogCreator(BaseModel):
- comment: str
-
- name: str
-
- version: str
-
-
-class LogEntryRequestHeader(BaseModel):
- name: str
-
- value: str
-
-
-class LogEntryRequest(BaseModel):
- body_size: float = FieldInfo(alias="bodySize")
-
- headers: List[LogEntryRequestHeader]
-
- headers_size: float = FieldInfo(alias="headersSize")
-
- http_version: str = FieldInfo(alias="httpVersion")
-
- method: str
-
- url: str
-
-
-class LogEntryResponseContent(BaseModel):
- mime_type: str = FieldInfo(alias="mimeType")
-
- size: float
-
- compression: Optional[int] = None
-
-
-class LogEntryResponseHeader(BaseModel):
- name: str
-
- value: str
-
-
-class LogEntryResponse(BaseModel):
- transfer_size: float = FieldInfo(alias="_transferSize")
-
- body_size: float = FieldInfo(alias="bodySize")
-
- content: LogEntryResponseContent
-
- headers: List[LogEntryResponseHeader]
-
- headers_size: float = FieldInfo(alias="headersSize")
-
- http_version: str = FieldInfo(alias="httpVersion")
-
- redirect_url: str = FieldInfo(alias="redirectURL")
-
- status: float
-
- status_text: str = FieldInfo(alias="statusText")
-
-
-class LogEntry(BaseModel):
- initial_priority: str = FieldInfo(alias="_initialPriority")
-
- initiator_type: str = FieldInfo(alias="_initiator_type")
-
- priority: str = FieldInfo(alias="_priority")
-
- request_id: str = FieldInfo(alias="_requestId")
-
- request_time: float = FieldInfo(alias="_requestTime")
-
- resource_type: str = FieldInfo(alias="_resourceType")
-
- cache: object
-
- connection: str
-
- pageref: str
-
- request: LogEntryRequest
-
- response: LogEntryResponse
-
- server_ip_address: str = FieldInfo(alias="serverIPAddress")
-
- started_date_time: str = FieldInfo(alias="startedDateTime")
-
- time: float
-
-
-class LogPagePageTimings(BaseModel):
- on_content_load: float = FieldInfo(alias="onContentLoad")
-
- on_load: float = FieldInfo(alias="onLoad")
-
-
-class LogPage(BaseModel):
- id: str
-
- page_timings: LogPagePageTimings = FieldInfo(alias="pageTimings")
-
- started_date_time: str = FieldInfo(alias="startedDateTime")
-
- title: str
-
-
-class Log(BaseModel):
- creator: LogCreator
-
- entries: List[LogEntry]
-
- pages: List[LogPage]
-
- version: str
-
-
-class ScanHARResponse(BaseModel):
- log: Log
diff --git a/src/cloudflare/types/url_scanner/scan_list_params.py b/src/cloudflare/types/url_scanner/scan_list_params.py
deleted file mode 100644
index c13e697eda1..00000000000
--- a/src/cloudflare/types/url_scanner/scan_list_params.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing_extensions import TypedDict
-
-__all__ = ["ScanListParams"]
-
-
-class ScanListParams(TypedDict, total=False):
- q: str
- """Filter scans"""
-
- size: int
- """Limit the number of objects in the response."""
diff --git a/src/cloudflare/types/url_scanner/scan_list_response.py b/src/cloudflare/types/url_scanner/scan_list_response.py
deleted file mode 100644
index 7cb1be617a4..00000000000
--- a/src/cloudflare/types/url_scanner/scan_list_response.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List
-
-from pydantic import Field as FieldInfo
-
-from ..._models import BaseModel
-
-__all__ = ["ScanListResponse", "Result", "ResultPage", "ResultStats", "ResultTask", "ResultVerdicts"]
-
-
-class ResultPage(BaseModel):
- asn: str
-
- country: str
-
- ip: str
-
- url: str
-
-
-class ResultStats(BaseModel):
- data_length: float = FieldInfo(alias="dataLength")
-
- requests: float
-
- uniq_countries: float = FieldInfo(alias="uniqCountries")
-
- uniq_ips: float = FieldInfo(alias="uniqIPs")
-
-
-class ResultTask(BaseModel):
- time: str
-
- url: str
-
- uuid: str
-
- visibility: str
-
-
-class ResultVerdicts(BaseModel):
- malicious: bool
-
-
-class Result(BaseModel):
- api_id: str = FieldInfo(alias="_id")
-
- page: ResultPage
-
- result: str
-
- stats: ResultStats
-
- task: ResultTask
-
- verdicts: ResultVerdicts
-
-
-class ScanListResponse(BaseModel):
- results: List[Result]
diff --git a/src/cloudflare/types/url_scanner/scan_screenshot_params.py b/src/cloudflare/types/url_scanner/scan_screenshot_params.py
deleted file mode 100644
index 2b3a24b0dd4..00000000000
--- a/src/cloudflare/types/url_scanner/scan_screenshot_params.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing_extensions import Literal, Required, Annotated, TypedDict
-
-from ..._utils import PropertyInfo
-
-__all__ = ["ScanScreenshotParams"]
-
-
-class ScanScreenshotParams(TypedDict, total=False):
- account_id: Required[Annotated[str, PropertyInfo(alias="accountId")]]
- """Account Id."""
-
- resolution: Literal["desktop", "mobile", "tablet"]
- """Target device type."""
diff --git a/tests/api_resources/url_scanner/__init__.py b/tests/api_resources/url_scanner/__init__.py
deleted file mode 100644
index fd8019a9a1a..00000000000
--- a/tests/api_resources/url_scanner/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
diff --git a/tests/api_resources/url_scanner/test_responses.py b/tests/api_resources/url_scanner/test_responses.py
deleted file mode 100644
index 5fe0f1eb19e..00000000000
--- a/tests/api_resources/url_scanner/test_responses.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import os
-from typing import Any, cast
-
-import pytest
-
-from cloudflare import Cloudflare, AsyncCloudflare
-from tests.utils import assert_matches_type
-
-base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
-
-
-class TestResponses:
- parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @parametrize
- def test_method_get(self, client: Cloudflare) -> None:
- response = client.url_scanner.responses.get(
- response_id="responseId",
- account_id="accountId",
- )
- assert_matches_type(str, response, path=["response"])
-
- @parametrize
- def test_raw_response_get(self, client: Cloudflare) -> None:
- http_response = client.url_scanner.responses.with_raw_response.get(
- response_id="responseId",
- account_id="accountId",
- )
-
- assert http_response.is_closed is True
- assert http_response.http_request.headers.get("X-Stainless-Lang") == "python"
- response = http_response.parse()
- assert_matches_type(str, response, path=["response"])
-
- @parametrize
- def test_streaming_response_get(self, client: Cloudflare) -> None:
- with client.url_scanner.responses.with_streaming_response.get(
- response_id="responseId",
- account_id="accountId",
- ) as http_response:
- assert not http_response.is_closed
- assert http_response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- response = http_response.parse()
- assert_matches_type(str, response, path=["response"])
-
- assert cast(Any, http_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 `account_id` but received ''"):
- client.url_scanner.responses.with_raw_response.get(
- response_id="responseId",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `response_id` but received ''"):
- client.url_scanner.responses.with_raw_response.get(
- response_id="",
- account_id="accountId",
- )
-
-
-class TestAsyncResponses:
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @parametrize
- async def test_method_get(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.responses.get(
- response_id="responseId",
- account_id="accountId",
- )
- assert_matches_type(str, response, path=["response"])
-
- @parametrize
- async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
- http_response = await async_client.url_scanner.responses.with_raw_response.get(
- response_id="responseId",
- account_id="accountId",
- )
-
- assert http_response.is_closed is True
- assert http_response.http_request.headers.get("X-Stainless-Lang") == "python"
- response = await http_response.parse()
- assert_matches_type(str, response, path=["response"])
-
- @parametrize
- async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.responses.with_streaming_response.get(
- response_id="responseId",
- account_id="accountId",
- ) as http_response:
- assert not http_response.is_closed
- assert http_response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- response = await http_response.parse()
- assert_matches_type(str, response, path=["response"])
-
- assert cast(Any, http_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 `account_id` but received ''"):
- await async_client.url_scanner.responses.with_raw_response.get(
- response_id="responseId",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `response_id` but received ''"):
- await async_client.url_scanner.responses.with_raw_response.get(
- response_id="",
- account_id="accountId",
- )
diff --git a/tests/api_resources/url_scanner/test_scans.py b/tests/api_resources/url_scanner/test_scans.py
deleted file mode 100644
index eb8d6e905a9..00000000000
--- a/tests/api_resources/url_scanner/test_scans.py
+++ /dev/null
@@ -1,777 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import os
-from typing import Any, cast
-
-import httpx
-import pytest
-from respx import MockRouter
-
-from cloudflare import Cloudflare, AsyncCloudflare
-from tests.utils import assert_matches_type
-from cloudflare._response import (
- BinaryAPIResponse,
- AsyncBinaryAPIResponse,
- StreamedBinaryAPIResponse,
- AsyncStreamedBinaryAPIResponse,
-)
-from cloudflare.types.url_scanner import (
- ScanGetResponse,
- ScanHARResponse,
- ScanListResponse,
- ScanBulkCreateResponse,
-)
-
-base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
-
-
-class TestScans:
- parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @parametrize
- def test_method_create(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.create(
- account_id="accountId",
- url="https://www.example.com",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- def test_method_create_with_all_params(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.create(
- account_id="accountId",
- url="https://www.example.com",
- customagent="customagent",
- custom_headers={"foo": "string"},
- referer="referer",
- screenshots_resolutions=["desktop"],
- visibility="Public",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- def test_raw_response_create(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.create(
- account_id="accountId",
- url="https://www.example.com",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_create(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.create(
- account_id="accountId",
- url="https://www.example.com",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(str, scan, 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 `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.create(
- account_id="",
- url="https://www.example.com",
- )
-
- @parametrize
- def test_method_list(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.list(
- account_id="accountId",
- )
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- def test_method_list_with_all_params(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.list(
- account_id="accountId",
- q="q",
- size=100,
- )
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- def test_raw_response_list(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.list(
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_list(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.list(
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(ScanListResponse, scan, 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 `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.list(
- account_id="",
- )
-
- @parametrize
- def test_method_bulk_create(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- )
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- @parametrize
- def test_raw_response_bulk_create(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_bulk_create(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- def test_path_params_bulk_create(self, client: Cloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.bulk_create(
- account_id="",
- body=[{"url": "https://www.example.com"}],
- )
-
- @parametrize
- def test_method_dom(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- def test_raw_response_dom(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_dom(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- def test_path_params_dom(self, client: Cloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- client.url_scanner.scans.with_raw_response.dom(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- def test_method_get(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(ScanGetResponse, scan, path=["response"])
-
- @parametrize
- def test_raw_response_get(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(ScanGetResponse, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_get(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(ScanGetResponse, scan, 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 `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- client.url_scanner.scans.with_raw_response.get(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- def test_method_har(self, client: Cloudflare) -> None:
- scan = client.url_scanner.scans.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- @parametrize
- def test_raw_response_har(self, client: Cloudflare) -> None:
- response = client.url_scanner.scans.with_raw_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = response.parse()
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- @parametrize
- def test_streaming_response_har(self, client: Cloudflare) -> None:
- with client.url_scanner.scans.with_streaming_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = response.parse()
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- def test_path_params_har(self, client: Cloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- client.url_scanner.scans.with_raw_response.har(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- def test_method_screenshot(self, client: Cloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- scan = client.url_scanner.scans.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert scan.is_closed
- assert scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, BinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- def test_method_screenshot_with_all_params(self, client: Cloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- scan = client.url_scanner.scans.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- resolution="desktop",
- )
- assert scan.is_closed
- assert scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, BinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- def test_raw_response_screenshot(self, client: Cloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
-
- scan = client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert scan.is_closed is True
- assert scan.http_request.headers.get("X-Stainless-Lang") == "python"
- assert scan.json() == {"foo": "bar"}
- assert isinstance(scan, BinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- def test_streaming_response_screenshot(self, client: Cloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- with client.url_scanner.scans.with_streaming_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as scan:
- assert not scan.is_closed
- assert scan.http_request.headers.get("X-Stainless-Lang") == "python"
-
- assert scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, StreamedBinaryAPIResponse)
-
- assert cast(Any, scan.is_closed) is True
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- def test_path_params_screenshot(self, client: Cloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="",
- account_id="accountId",
- )
-
-
-class TestAsyncScans:
- parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @parametrize
- async def test_method_create(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.create(
- account_id="accountId",
- url="https://www.example.com",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- async def test_method_create_with_all_params(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.create(
- account_id="accountId",
- url="https://www.example.com",
- customagent="customagent",
- custom_headers={"foo": "string"},
- referer="referer",
- screenshots_resolutions=["desktop"],
- visibility="Public",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_create(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.create(
- account_id="accountId",
- url="https://www.example.com",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_create(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.create(
- account_id="accountId",
- url="https://www.example.com",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(str, scan, 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 `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.create(
- account_id="",
- url="https://www.example.com",
- )
-
- @parametrize
- async def test_method_list(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.list(
- account_id="accountId",
- )
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- async def test_method_list_with_all_params(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.list(
- account_id="accountId",
- q="q",
- size=100,
- )
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.list(
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(ScanListResponse, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.list(
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(ScanListResponse, scan, 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 `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.list(
- account_id="",
- )
-
- @parametrize
- async def test_method_bulk_create(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- )
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_bulk_create(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_bulk_create(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.bulk_create(
- account_id="accountId",
- body=[{"url": "https://www.example.com"}],
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(ScanBulkCreateResponse, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- async def test_path_params_bulk_create(self, async_client: AsyncCloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.bulk_create(
- account_id="",
- body=[{"url": "https://www.example.com"}],
- )
-
- @parametrize
- async def test_method_dom(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_dom(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_dom(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(str, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- async def test_path_params_dom(self, async_client: AsyncCloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.dom(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.dom(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- async def test_method_get(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(ScanGetResponse, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(ScanGetResponse, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(ScanGetResponse, scan, 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 `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.get(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.get(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- async def test_method_har(self, async_client: AsyncCloudflare) -> None:
- scan = await async_client.url_scanner.scans.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- @parametrize
- async def test_raw_response_har(self, async_client: AsyncCloudflare) -> None:
- response = await async_client.url_scanner.scans.with_raw_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- scan = await response.parse()
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- @parametrize
- async def test_streaming_response_har(self, async_client: AsyncCloudflare) -> None:
- async with async_client.url_scanner.scans.with_streaming_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- scan = await response.parse()
- assert_matches_type(ScanHARResponse, scan, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
- @parametrize
- async def test_path_params_har(self, async_client: AsyncCloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.har(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.har(
- scan_id="",
- account_id="accountId",
- )
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- async def test_method_screenshot(self, async_client: AsyncCloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- scan = await async_client.url_scanner.scans.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
- assert scan.is_closed
- assert await scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, AsyncBinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- async def test_method_screenshot_with_all_params(
- self, async_client: AsyncCloudflare, respx_mock: MockRouter
- ) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- scan = await async_client.url_scanner.scans.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- resolution="desktop",
- )
- assert scan.is_closed
- assert await scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, AsyncBinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- async def test_raw_response_screenshot(self, async_client: AsyncCloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
-
- scan = await async_client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- )
-
- assert scan.is_closed is True
- assert scan.http_request.headers.get("X-Stainless-Lang") == "python"
- assert await scan.json() == {"foo": "bar"}
- assert isinstance(scan, AsyncBinaryAPIResponse)
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- async def test_streaming_response_screenshot(self, async_client: AsyncCloudflare, respx_mock: MockRouter) -> None:
- respx_mock.get("/accounts/accountId/urlscanner/v2/screenshots/182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e.png").mock(
- return_value=httpx.Response(200, json={"foo": "bar"})
- )
- async with async_client.url_scanner.scans.with_streaming_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="accountId",
- ) as scan:
- assert not scan.is_closed
- assert scan.http_request.headers.get("X-Stainless-Lang") == "python"
-
- assert await scan.json() == {"foo": "bar"}
- assert cast(Any, scan.is_closed) is True
- assert isinstance(scan, AsyncStreamedBinaryAPIResponse)
-
- assert cast(Any, scan.is_closed) is True
-
- @parametrize
- @pytest.mark.respx(base_url=base_url)
- async def test_path_params_screenshot(self, async_client: AsyncCloudflare) -> None:
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `account_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
- account_id="",
- )
-
- with pytest.raises(ValueError, match=r"Expected a non-empty value for `scan_id` but received ''"):
- await async_client.url_scanner.scans.with_raw_response.screenshot(
- scan_id="",
- account_id="accountId",
- )