Update Pool

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

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