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 175 days ago Viewed 5894 times
0
Submitted by hugo697 Typescript (fetch-only)
Verified 175 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