Create a branch restriction rule

Creates a new branch restriction rule for a repository.

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

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