0

Create Pool

by
Published Nov 16, 2023

Create a new pool.

Script cloudflare
  • Submitted by hugo697 Typescript (fetch-only)
    Created 536 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