// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import { isRequestOptions } from 'cloudflare/core';
import * as URLScannerAPI from 'cloudflare/resources/url-scanner/url-scanner';
import * as ScansAPI from 'cloudflare/resources/url-scanner/scans';
export class URLScanner extends APIResource {
scans: ScansAPI.Scans = new ScansAPI.Scans(this._client);
/**
* Search scans by date and webpages' requests, including full URL (after
* redirects), hostname, and path.
A successful scan will appear in search
* results a few minutes after finishing but may take much longer if the system in
* under load. By default, only successfully completed scans will appear in search
* results, unless searching by `scanId`. Please take into account that older scans
* may be removed from the search index at an unspecified time.
*/
scan(
accountId: string,
query?: URLScannerScanParams,
options?: Core.RequestOptions,
): Core.APIPromise;
scan(accountId: string, options?: Core.RequestOptions): Core.APIPromise;
scan(
accountId: string,
query: URLScannerScanParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.APIPromise {
if (isRequestOptions(query)) {
return this.scan(accountId, {}, query);
}
return (
this._client.get(`/accounts/${accountId}/urlscanner/scan`, { query, ...options }) as Core.APIPromise<{
result: URLScannerScanResponse;
}>
)._thenUnwrap((obj) => obj.result);
}
}
export interface URLScannerScanResponse {
tasks: Array;
}
export namespace URLScannerScanResponse {
export interface Task {
/**
* Alpha-2 country code
*/
country: string;
/**
* Whether scan was successful or not
*/
success: boolean;
/**
* When scan was submitted (UTC)
*/
time: string;
/**
* Scan url (after redirects)
*/
url: string;
/**
* Scan id
*/
uuid: string;
/**
* Visibility status.
*/
visibility: string;
}
}
export interface URLScannerScanParams {
/**
* Return only scans created by account.
*/
account_scans?: boolean;
/**
* Filter scans by Autonomous System Number (ASN) of _any_ request made by the
* webpage.
*/
asn?: string;
/**
* Filter scans requested before date (inclusive).
*/
date_end?: string;
/**
* Filter scans requested after date (inclusive).
*/
date_start?: string;
/**
* Filter scans by hash of any html/js/css request made by the webpage.
*/
hash?: string;
/**
* Filter scans by hostname of _any_ request made by the webpage.
*/
hostname?: string;
/**
* Filter scans by IP address (IPv4 or IPv6) of _any_ request made by the webpage.
*/
ip?: string;
/**
* Filter scans by malicious verdict.
*/
is_malicious?: boolean;
/**
* Limit the number of objects in the response.
*/
limit?: number;
/**
* Pagination cursor to get the next set of results.
*/
next_cursor?: string;
/**
* Filter scans by main page Autonomous System Number (ASN).
*/
page_asn?: string;
/**
* Filter scans by main page hostname .
*/
page_hostname?: string;
/**
* Filter scans by main page IP address (IPv4 or IPv6).
*/
page_ip?: string;
/**
* Filter scans by exact match URL path (also supports suffix search).
*/
page_path?: string;
/**
* Filter scans by exact match to scanned URL (_after redirects_)
*/
page_url?: string;
/**
* Filter scans by url path of _any_ request made by the webpage.
*/
path?: string;
/**
* Scan uuid
*/
scanId?: string;
/**
* Filter scans by exact match URL of _any_ request made by the webpage
*/
url?: string;
}
export namespace URLScanner {
export import URLScannerScanResponse = URLScannerAPI.URLScannerScanResponse;
export import URLScannerScanParams = URLScannerAPI.URLScannerScanParams;
export import Scans = ScansAPI.Scans;
export import ScanCreateResponse = ScansAPI.ScanCreateResponse;
export import ScanGetResponse = ScansAPI.ScanGetResponse;
export import ScanHarResponse = ScansAPI.ScanHarResponse;
export import ScanCreateParams = ScansAPI.ScanCreateParams;
export import ScanScreenshotParams = ScansAPI.ScanScreenshotParams;
}