cloudflare
Version:
The official TypeScript library for the Cloudflare API
213 lines (176 loc) • 4.6 kB
text/typescript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../../resource';
import * as Core from '../../core';
import { SinglePage } from '../../pagination';
export class Traceroutes extends APIResource {
/**
* Run traceroutes from Cloudflare colos.
*/
create(
params: TracerouteCreateParams,
options?: Core.RequestOptions,
): Core.PagePromise<TraceroutesSinglePage, Traceroute> {
const { account_id, ...body } = params;
return this._client.getAPIList(`/accounts/${account_id}/diagnostics/traceroute`, TraceroutesSinglePage, {
body,
method: 'post',
...options,
});
}
}
export class TraceroutesSinglePage extends SinglePage<Traceroute> {}
export interface Traceroute {
colos?: Array<Traceroute.Colo>;
/**
* The target hostname, IPv6, or IPv6 address.
*/
target?: string;
}
export namespace Traceroute {
export interface Colo {
colo?: Colo.Colo;
/**
* Errors resulting from collecting traceroute from colo to target.
*/
error?:
| ''
| 'Could not gather traceroute data: Code 1'
| 'Could not gather traceroute data: Code 2'
| 'Could not gather traceroute data: Code 3'
| 'Could not gather traceroute data: Code 4';
hops?: Array<Colo.Hop>;
/**
* Aggregated statistics from all hops about the target.
*/
target_summary?: unknown;
/**
* Total time of traceroute in ms.
*/
traceroute_time_ms?: number;
}
export namespace Colo {
export interface Colo {
/**
* Source colo city.
*/
city?: string;
/**
* Source colo name.
*/
name?: string;
}
export interface Hop {
/**
* An array of node objects.
*/
nodes?: Array<Hop.Node>;
/**
* Number of packets where no response was received.
*/
packets_lost?: number;
/**
* Number of packets sent with specified TTL.
*/
packets_sent?: number;
/**
* The time to live (TTL).
*/
packets_ttl?: number;
}
export namespace Hop {
export interface Node {
/**
* AS number associated with the node object.
*/
asn?: string;
/**
* IP address of the node.
*/
ip?: string;
/**
* Field appears if there is an additional annotation printed when the probe
* returns. Field also appears when running a GRE+ICMP traceroute to denote which
* traceroute a node comes from.
*/
labels?: Array<string>;
/**
* Maximum RTT in ms.
*/
max_rtt_ms?: number;
/**
* Mean RTT in ms.
*/
mean_rtt_ms?: number;
/**
* Minimum RTT in ms.
*/
min_rtt_ms?: number;
/**
* Host name of the address, this may be the same as the IP address.
*/
name?: string;
/**
* Number of packets with a response from this node.
*/
packet_count?: number;
/**
* Standard deviation of the RTTs in ms.
*/
std_dev_rtt_ms?: number;
}
}
}
}
export interface TracerouteCreateParams {
/**
* Path param: Identifier
*/
account_id: string;
/**
* Body param:
*/
targets: Array<string>;
/**
* Body param: If no source colo names specified, all colos will be used. China
* colos are unavailable for traceroutes.
*/
colos?: Array<string>;
/**
* Body param:
*/
options?: TracerouteCreateParams.Options;
}
export namespace TracerouteCreateParams {
export interface Options {
/**
* Max TTL.
*/
max_ttl?: number;
/**
* Type of packet sent.
*/
packet_type?: 'icmp' | 'tcp' | 'udp' | 'gre' | 'gre+icmp';
/**
* Number of packets sent at each TTL.
*/
packets_per_ttl?: number;
/**
* For UDP and TCP, specifies the destination port. For ICMP, specifies the initial
* ICMP sequence value. Default value 0 will choose the best value to use for each
* protocol.
*/
port?: number;
/**
* Set the time (in seconds) to wait for a response to a probe.
*/
wait_time?: number;
}
}
Traceroutes.TraceroutesSinglePage = TraceroutesSinglePage;
export declare namespace Traceroutes {
export {
type Traceroute as Traceroute,
TraceroutesSinglePage as TraceroutesSinglePage,
type TracerouteCreateParams as TracerouteCreateParams,
};
}