Update a branch restriction rule

Updates an existing branch restriction rule. Fields not present in the request body are ignored. See `POST` for details.

Script bitbucket Verified

by hugo697 ยท 10/24/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 375 days ago
1
type Bitbucket = {
2
  username: string;
3
  password: string;
4
};
5
/**
6
 * Update a branch restriction rule
7
 * Updates an existing branch restriction rule.
8

9
Fields not present in the request body are ignored.
10

11
See `POST` for details.
12
 */
13
export async function main(
14
  auth: Bitbucket,
15
  id: string,
16
  repo_slug: string,
17
  workspace: string,
18
  body: { type: string; [k: string]: unknown } & {
19
    users?: ({ type: string; [k: string]: unknown } & {
20
      links?: {
21
        avatar?: { href?: string; name?: string };
22
        [k: string]: unknown;
23
      };
24
      created_on?: string;
25
      display_name?: string;
26
      username?: string;
27
      uuid?: string;
28
      [k: string]: unknown;
29
    })[];
30
    groups?: ({ type: string; [k: string]: unknown } & {
31
      links?: {
32
        self?: { href?: string; name?: string };
33
        html?: { href?: string; name?: string };
34
      };
35
      owner?: { type: string; [k: string]: unknown } & {
36
        links?: {
37
          avatar?: { href?: string; name?: string };
38
          [k: string]: unknown;
39
        };
40
        created_on?: string;
41
        display_name?: string;
42
        username?: string;
43
        uuid?: string;
44
        [k: string]: unknown;
45
      };
46
      workspace?: { type: string; [k: string]: unknown } & {
47
        links?: {
48
          avatar?: { href?: string; name?: string };
49
          html?: { href?: string; name?: string };
50
          members?: { href?: string; name?: string };
51
          owners?: { href?: string; name?: string };
52
          projects?: { href?: string; name?: string };
53
          repositories?: { href?: string; name?: string };
54
          snippets?: { href?: string; name?: string };
55
          self?: { href?: string; name?: string };
56
        };
57
        uuid?: string;
58
        name?: string;
59
        slug?: string;
60
        is_private?: boolean;
61
        created_on?: string;
62
        updated_on?: string;
63
        [k: string]: unknown;
64
      };
65
      name?: string;
66
      slug?: string;
67
      full_slug?: string;
68
      [k: string]: unknown;
69
    })[];
70
    [k: string]: unknown;
71
  }
72
) {
73
  const url = new URL(
74
    `https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}/branch-restrictions/${id}`
75
  );
76

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