Create Pool

Create a new pool.

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
 * Create Pool
8
 * Create a new pool.
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  body: {
13
    check_regions?: (
14
      | "WNAM"
15
      | "ENAM"
16
      | "WEU"
17
      | "EEU"
18
      | "NSAM"
19
      | "SSAM"
20
      | "OC"
21
      | "ME"
22
      | "NAF"
23
      | "SAF"
24
      | "SAS"
25
      | "SEAS"
26
      | "NEAS"
27
      | "ALL_REGIONS"
28
    )[];
29
    description?: string;
30
    enabled?: boolean;
31
    latitude?: number;
32
    load_shedding?: {
33
      default_percent?: number;
34
      default_policy?: "random" | "hash";
35
      session_percent?: number;
36
      session_policy?: "hash";
37
      [k: string]: unknown;
38
    };
39
    longitude?: number;
40
    minimum_origins?: number;
41
    monitor?: { [k: string]: unknown };
42
    name: string;
43
    notification_email?: string;
44
    notification_filter?: {
45
      origin?: { disable?: boolean; healthy?: boolean; [k: string]: unknown };
46
      pool?: { disable?: boolean; healthy?: boolean; [k: string]: unknown };
47
      [k: string]: unknown;
48
    };
49
    origin_steering?: {
50
      policy?:
51
        | "random"
52
        | "hash"
53
        | "least_outstanding_requests"
54
        | "least_connections";
55
      [k: string]: unknown;
56
    };
57
    origins: {
58
      address?: string;
59
      disabled_at?: string;
60
      enabled?: boolean;
61
      header?: { Host?: string[]; [k: string]: unknown };
62
      name?: string;
63
      virtual_network_id?: string;
64
      weight?: number;
65
      [k: string]: unknown;
66
    }[];
67
    [k: string]: unknown;
68
  }
69
) {
70
  const url = new URL(
71
    `https://api.cloudflare.com/client/v4/user/load_balancers/pools`
72
  );
73

74
  const response = await fetch(url, {
75
    method: "POST",
76
    headers: {
77
      "X-AUTH-EMAIL": auth.email,
78
      "X-AUTH-KEY": auth.key,
79
      "Content-Type": "application/json",
80
      Authorization: "Bearer " + auth.token,
81
    },
82
    body: JSON.stringify(body),
83
  });
84
  if (!response.ok) {
85
    const text = await response.text();
86
    throw new Error(`${response.status} ${text}`);
87
  }
88
  return await response.json();
89
}
90