Update Member

Modify an account member.

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 Member
8
 * Modify an account member.
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  identifier: string,
13
  account_identifier: string,
14
  body: {
15
    id: string;
16
    roles: {
17
      description: string;
18
      id: string;
19
      name: string;
20
      permissions: {
21
        analytics?: { read?: boolean; write?: boolean; [k: string]: unknown };
22
        billing?: { read?: boolean; write?: boolean; [k: string]: unknown };
23
        cache_purge?: { read?: boolean; write?: boolean; [k: string]: unknown };
24
        dns?: { read?: boolean; write?: boolean; [k: string]: unknown };
25
        dns_records?: { read?: boolean; write?: boolean; [k: string]: unknown };
26
        lb?: { read?: boolean; write?: boolean; [k: string]: unknown };
27
        logs?: { read?: boolean; write?: boolean; [k: string]: unknown };
28
        organization?: {
29
          read?: boolean;
30
          write?: boolean;
31
          [k: string]: unknown;
32
        };
33
        ssl?: { read?: boolean; write?: boolean; [k: string]: unknown };
34
        waf?: { read?: boolean; write?: boolean; [k: string]: unknown };
35
        zone_settings?: {
36
          read?: boolean;
37
          write?: boolean;
38
          [k: string]: unknown;
39
        };
40
        zones?: { read?: boolean; write?: boolean; [k: string]: unknown };
41
        [k: string]: unknown;
42
      } & { [k: string]: unknown };
43
      [k: string]: unknown;
44
    }[];
45
    status: { [k: string]: unknown };
46
    user: {
47
      email: string;
48
      first_name?: string;
49
      id?: string;
50
      last_name?: string;
51
      two_factor_authentication_enabled?: boolean;
52
      [k: string]: unknown;
53
    };
54
    [k: string]: unknown;
55
  }
56
) {
57
  const url = new URL(
58
    `https://api.cloudflare.com/client/v4/accounts/${account_identifier}/members/${identifier}`
59
  );
60

61
  const response = await fetch(url, {
62
    method: "PUT",
63
    headers: {
64
      "X-AUTH-EMAIL": auth.email,
65
      "X-AUTH-KEY": auth.key,
66
      "Content-Type": "application/json",
67
      Authorization: "Bearer " + auth.token,
68
    },
69
    body: JSON.stringify(body),
70
  });
71
  if (!response.ok) {
72
    const text = await response.text();
73
    throw new Error(`${response.status} ${text}`);
74
  }
75
  return await response.json();
76
}
77