Update a comment on an issue

Updates the content of the specified issue comment. Note that only the `content.raw` field can be modified. ``` $ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/issues/42/comments/5728901 \ -X PUT -u evzijst \ -H 'Content-Type: application/json' \ -d '{"content": {"raw": "Lorem ipsum."}' ```

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 comment on an issue
7
 * Updates the content of the specified issue comment. Note that only
8
the `content.raw` field can be modified.
9

10
```
11
$ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/issues/42/comments/5728901 \
12
  -X PUT -u evzijst \
13
  -H 'Content-Type: application/json' \
14
  -d '{"content": {"raw": "Lorem ipsum."}'
15
```
16
 */
17
export async function main(
18
  auth: Bitbucket,
19
  comment_id: string,
20
  issue_id: string,
21
  repo_slug: string,
22
  workspace: string,
23
  body: ({ type: string; [k: string]: unknown } & {
24
    id?: number;
25
    created_on?: string;
26
    updated_on?: string;
27
    content?: {
28
      raw?: string;
29
      markup?: "markdown" | "creole" | "plaintext";
30
      html?: string;
31
    };
32
    user?: { type: string; [k: string]: unknown } & {
33
      links?: {
34
        avatar?: { href?: string; name?: string };
35
        [k: string]: unknown;
36
      };
37
      created_on?: string;
38
      display_name?: string;
39
      username?: string;
40
      uuid?: string;
41
      [k: string]: unknown;
42
    };
43
    deleted?: boolean;
44
    parent?: unknown;
45
    inline?: { from?: number; to?: number; path: string };
46
    links?: {
47
      self?: { href?: string; name?: string };
48
      html?: { href?: string; name?: string };
49
      code?: { href?: string; name?: string };
50
    };
51
    [k: string]: unknown;
52
  }) & {
53
    issue?: { type: string; [k: string]: unknown } & {
54
      links?: {
55
        self?: { href?: string; name?: string };
56
        html?: { href?: string; name?: string };
57
        comments?: { href?: string; name?: string };
58
        attachments?: { href?: string; name?: string };
59
        watch?: { href?: string; name?: string };
60
        vote?: { href?: string; name?: string };
61
      };
62
      id?: number;
63
      repository?: { type: string; [k: string]: unknown } & {
64
        links?: {
65
          self?: { href?: string; name?: string };
66
          html?: { href?: string; name?: string };
67
          avatar?: { href?: string; name?: string };
68
          pullrequests?: { href?: string; name?: string };
69
          commits?: { href?: string; name?: string };
70
          forks?: { href?: string; name?: string };
71
          watchers?: { href?: string; name?: string };
72
          downloads?: { href?: string; name?: string };
73
          clone?: { href?: string; name?: string }[];
74
          hooks?: { href?: string; name?: string };
75
        };
76
        uuid?: string;
77
        full_name?: string;
78
        is_private?: boolean;
79
        parent?: unknown;
80
        scm?: "git";
81
        owner?: { type: string; [k: string]: unknown } & {
82
          links?: {
83
            avatar?: { href?: string; name?: string };
84
            [k: string]: unknown;
85
          };
86
          created_on?: string;
87
          display_name?: string;
88
          username?: string;
89
          uuid?: string;
90
          [k: string]: unknown;
91
        };
92
        name?: string;
93
        description?: string;
94
        created_on?: string;
95
        updated_on?: string;
96
        size?: number;
97
        language?: string;
98
        has_issues?: boolean;
99
        has_wiki?: boolean;
100
        fork_policy?: "allow_forks" | "no_public_forks" | "no_forks";
101
        project?: { type: string; [k: string]: unknown } & {
102
          links?: {
103
            html?: { href?: string; name?: string };
104
            avatar?: { href?: string; name?: string };
105
          };
106
          uuid?: string;
107
          key?: string;
108
          owner?: ({ type: string; [k: string]: unknown } & {
109
            links?: {
110
              avatar?: { href?: string; name?: string };
111
              [k: string]: unknown;
112
            };
113
            created_on?: string;
114
            display_name?: string;
115
            username?: string;
116
            uuid?: string;
117
            [k: string]: unknown;
118
          }) & {
119
            links?: {
120
              avatar?: { href?: string; name?: string };
121
              [k: string]: unknown;
122
            } & {
123
              self?: { href?: string; name?: string };
124
              html?: { href?: string; name?: string };
125
              members?: { href?: string; name?: string };
126
              projects?: { href?: string; name?: string };
127
              repositories?: { href?: string; name?: string };
128
              [k: string]: unknown;
129
            };
130
            [k: string]: unknown;
131
          };
132
          name?: string;
133
          description?: string;
134
          is_private?: boolean;
135
          created_on?: string;
136
          updated_on?: string;
137
          has_publicly_visible_repos?: boolean;
138
          [k: string]: unknown;
139
        };
140
        mainbranch?: {
141
          type: string;
142
          links?: {
143
            self?: { href?: string; name?: string };
144
            commits?: { href?: string; name?: string };
145
            html?: { href?: string; name?: string };
146
          };
147
          name?: string;
148
          target?: ({ type: string; [k: string]: unknown } & {
149
            hash?: string;
150
            date?: string;
151
            author?: { type: string; [k: string]: unknown } & {
152
              raw?: string;
153
              user?: { type: string; [k: string]: unknown } & {
154
                links?: {
155
                  avatar?: { href?: string; name?: string };
156
                  [k: string]: unknown;
157
                };
158
                created_on?: string;
159
                display_name?: string;
160
                username?: string;
161
                uuid?: string;
162
                [k: string]: unknown;
163
              };
164
              [k: string]: unknown;
165
            };
166
            message?: string;
167
            summary?: {
168
              raw?: string;
169
              markup?: "markdown" | "creole" | "plaintext";
170
              html?: string;
171
            };
172
            parents?: unknown[];
173
            [k: string]: unknown;
174
          }) & {
175
            repository?: unknown;
176
            participants?: ({ type: string; [k: string]: unknown } & {
177
              user?: { type: string; [k: string]: unknown } & {
178
                links?: {
179
                  avatar?: { href?: string; name?: string };
180
                  [k: string]: unknown;
181
                };
182
                created_on?: string;
183
                display_name?: string;
184
                username?: string;
185
                uuid?: string;
186
                [k: string]: unknown;
187
              };
188
              role?: "PARTICIPANT" | "REVIEWER";
189
              approved?: boolean;
190
              state?: "approved" | "changes_requested" | null;
191
              participated_on?: string;
192
              [k: string]: unknown;
193
            })[];
194
            [k: string]: unknown;
195
          };
196
          [k: string]: unknown;
197
        } & {
198
          merge_strategies?: ("merge_commit" | "squash" | "fast_forward")[];
199
          default_merge_strategy?: string;
200
          [k: string]: unknown;
201
        };
202
        [k: string]: unknown;
203
      };
204
      title?: string;
205
      reporter?: { type: string; [k: string]: unknown } & {
206
        links?: {
207
          avatar?: { href?: string; name?: string };
208
          [k: string]: unknown;
209
        };
210
        created_on?: string;
211
        display_name?: string;
212
        username?: string;
213
        uuid?: string;
214
        [k: string]: unknown;
215
      };
216
      assignee?: { type: string; [k: string]: unknown } & {
217
        links?: {
218
          avatar?: { href?: string; name?: string };
219
          [k: string]: unknown;
220
        };
221
        created_on?: string;
222
        display_name?: string;
223
        username?: string;
224
        uuid?: string;
225
        [k: string]: unknown;
226
      };
227
      created_on?: string;
228
      updated_on?: string;
229
      edited_on?: string;
230
      state?:
231
        | "submitted"
232
        | "new"
233
        | "open"
234
        | "resolved"
235
        | "on hold"
236
        | "invalid"
237
        | "duplicate"
238
        | "wontfix"
239
        | "closed";
240
      kind?: "bug" | "enhancement" | "proposal" | "task";
241
      priority?: "trivial" | "minor" | "major" | "critical" | "blocker";
242
      milestone?: { type: string; [k: string]: unknown } & {
243
        links?: { self?: { href?: string; name?: string } };
244
        name?: string;
245
        id?: number;
246
        [k: string]: unknown;
247
      };
248
      version?: { type: string; [k: string]: unknown } & {
249
        links?: { self?: { href?: string; name?: string } };
250
        name?: string;
251
        id?: number;
252
        [k: string]: unknown;
253
      };
254
      component?: { type: string; [k: string]: unknown } & {
255
        links?: { self?: { href?: string; name?: string } };
256
        name?: string;
257
        id?: number;
258
        [k: string]: unknown;
259
      };
260
      votes?: number;
261
      content?: {
262
        raw?: string;
263
        markup?: "markdown" | "creole" | "plaintext";
264
        html?: string;
265
      };
266
      [k: string]: unknown;
267
    };
268
    [k: string]: unknown;
269
  }
270
) {
271
  const url = new URL(
272
    `https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}/issues/${issue_id}/comments/${comment_id}`
273
  );
274

275
  const response = await fetch(url, {
276
    method: "PUT",
277
    headers: {
278
      "Content-Type": "application/json",
279
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
280
    },
281
    body: JSON.stringify(body),
282
  });
283
  if (!response.ok) {
284
    const text = await response.text();
285
    throw new Error(`${response.status} ${text}`);
286
  }
287
  return await response.json();
288
}
289