0
Get dashboard
One script reply has been approved by the moderators Verified

The dashboard view provides both totals and timeseries data for the given zone and time period across the entire Cloudflare network.

Created by hugo697 149 days ago Viewed 3607 times
0
Submitted by hugo697 Typescript (fetch-only)
Verified 149 days ago
1
type Cloudflare = {
2
  token: string;
3
  email: string;
4
  key: string;
5
};
6
/**
7
 * Get dashboard
8
 * The dashboard view provides both totals and timeseries data for the given zone and time period across the entire Cloudflare network.
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  zone_identifier: string,
13
  until: string | undefined,
14
  since: string | undefined,
15
  continuous: string | undefined
16
) {
17
  const url = new URL(
18
    `https://api.cloudflare.com/client/v4/zones/${zone_identifier}/analytics/dashboard`
19
  );
20
  for (const [k, v] of [
21
    ["until", until],
22
    ["since", since],
23
    ["continuous", continuous],
24
  ]) {
25
    if (v !== undefined && v !== "") {
26
      url.searchParams.append(k, v);
27
    }
28
  }
29
  const response = await fetch(url, {
30
    method: "GET",
31
    headers: {
32
      "X-AUTH-EMAIL": auth.email,
33
      "X-AUTH-KEY": auth.key,
34
      Authorization: "Bearer " + auth.token,
35
    },
36
    body: undefined,
37
  });
38
  if (!response.ok) {
39
    const text = await response.text();
40
    throw new Error(`${response.status} ${text}`);
41
  }
42
  return await response.json();
43
}
44