Create a comment on a snippet

Creates a new comment. The only required field in the body is `content.raw`. To create a threaded reply to an existing comment, include `parent.id`.

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 comment on a snippet
7
 * Creates a new comment.
8

9
The only required field in the body is `content.raw`.
10

11
To create a threaded reply to an existing comment, include `parent.id`.
12
 */
13
export async function main(
14
  auth: Bitbucket,
15
  encoded_id: string,
16
  workspace: string,
17
  body: { type: string; [k: string]: unknown } & {
18
    links?: {
19
      self?: { href?: string; name?: string };
20
      html?: { href?: string; name?: string };
21
    };
22
    snippet?: { type: string; [k: string]: unknown } & {
23
      id?: number;
24
      title?: string;
25
      scm?: "git";
26
      created_on?: string;
27
      updated_on?: string;
28
      owner?: { type: string; [k: string]: unknown } & {
29
        links?: {
30
          avatar?: { href?: string; name?: string };
31
          [k: string]: unknown;
32
        };
33
        created_on?: string;
34
        display_name?: string;
35
        username?: string;
36
        uuid?: string;
37
        [k: string]: unknown;
38
      };
39
      creator?: { type: string; [k: string]: unknown } & {
40
        links?: {
41
          avatar?: { href?: string; name?: string };
42
          [k: string]: unknown;
43
        };
44
        created_on?: string;
45
        display_name?: string;
46
        username?: string;
47
        uuid?: string;
48
        [k: string]: unknown;
49
      };
50
      is_private?: boolean;
51
      [k: string]: unknown;
52
    };
53
    [k: string]: unknown;
54
  }
55
) {
56
  const url = new URL(
57
    `https://api.bitbucket.org/2.0/snippets/${workspace}/${encoded_id}/comments`
58
  );
59

60
  const response = await fetch(url, {
61
    method: "POST",
62
    headers: {
63
      "Content-Type": "application/json",
64
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
65
    },
66
    body: JSON.stringify(body),
67
  });
68
  if (!response.ok) {
69
    const text = await response.text();
70
    throw new Error(`${response.status} ${text}`);
71
  }
72
  return await response.json();
73
}
74