Get BGP route leak events

Get the BGP route leak events (Beta).

Script cloudflare Verified

by hugo697 ยท 11/16/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 383 days ago
1
type Cloudflare = {
2
  token: string;
3
  email: string;
4
  key: string;
5
};
6
/**
7
 * Get BGP route leak events
8
 * Get the BGP route leak events (Beta).
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  page: string | undefined,
13
  per_page: string | undefined,
14
  eventId: string | undefined,
15
  leakAsn: string | undefined,
16
  involvedAsn: string | undefined,
17
  involvedCountry: string | undefined,
18
  dateRange:
19
    | "1d"
20
    | "2d"
21
    | "7d"
22
    | "14d"
23
    | "28d"
24
    | "12w"
25
    | "24w"
26
    | "52w"
27
    | "1dControl"
28
    | "2dControl"
29
    | "7dControl"
30
    | "14dControl"
31
    | "28dControl"
32
    | "12wControl"
33
    | "24wControl"
34
    | undefined,
35
  dateStart: string | undefined,
36
  dateEnd: string | undefined,
37
  sortBy:
38
    | "ID"
39
    | "LEAKS"
40
    | "PEERS"
41
    | "PREFIXES"
42
    | "ORIGINS"
43
    | "TIME"
44
    | undefined,
45
  sortOrder: "ASC" | "DESC" | undefined,
46
  format: "JSON" | "CSV" | undefined
47
) {
48
  const url = new URL(
49
    `https://api.cloudflare.com/client/v4/radar/bgp/leaks/events`
50
  );
51
  for (const [k, v] of [
52
    ["page", page],
53
    ["per_page", per_page],
54
    ["eventId", eventId],
55
    ["leakAsn", leakAsn],
56
    ["involvedAsn", involvedAsn],
57
    ["involvedCountry", involvedCountry],
58
    ["dateRange", dateRange],
59
    ["dateStart", dateStart],
60
    ["dateEnd", dateEnd],
61
    ["sortBy", sortBy],
62
    ["sortOrder", sortOrder],
63
    ["format", format],
64
  ]) {
65
    if (v !== undefined && v !== "") {
66
      url.searchParams.append(k, v);
67
    }
68
  }
69
  const response = await fetch(url, {
70
    method: "GET",
71
    headers: {
72
      "X-AUTH-EMAIL": auth.email,
73
      "X-AUTH-KEY": auth.key,
74
      Authorization: "Bearer " + auth.token,
75
    },
76
    body: undefined,
77
  });
78
  if (!response.ok) {
79
    const text = await response.text();
80
    throw new Error(`${response.status} ${text}`);
81
  }
82
  return await response.json();
83
}
84