0

List Issue Comments

by
Published Nov 2, 2023

List the comments on an issue, one page at a time (`startAt` / `maxResults` / `total` in the response). Comment bodies are Atlassian Document Format; set `render_body` to also get them as HTML.

Script jira Verified

The script

Submitted by hugo989 Typescript (fetch-only)
Verified 4 hours ago
1
//native
2

3
/**
4
 * List Issue Comments
5
 * List the comments on an issue, one page at a time (`startAt` / `maxResults` / `total` in the response). Comment bodies are Atlassian Document Format; set `render_body` to also get them as HTML.
6
 */
7
export async function main(
8
  auth: RT.Jira,
9
  issue_id_or_key: string,
10
  order_by: "created" | "-created" | undefined,
11
  render_body: boolean | undefined,
12
  start_at: number | undefined,
13
  max_results: number | undefined
14
) {
15
  const url = new URL(
16
    `https://${auth.domain}.atlassian.net/rest/api/3/issue/${issue_id_or_key}/comment`
17
  )
18
  if (order_by != null && order_by !== "") {
19
    url.searchParams.append("orderBy", order_by)
20
  }
21
  if (start_at != null) {
22
    url.searchParams.append("startAt", String(start_at))
23
  }
24
  if (max_results != null) {
25
    url.searchParams.append("maxResults", String(max_results))
26
  }
27

28
  if (render_body) {
29
    url.searchParams.append("expand", "renderedBody")
30
  }
31

32
  const response = await fetch(url, {
33
    method: "GET",
34
    headers: {
35
      Authorization: `Basic ${btoa(`${auth.username}:${auth.password}`)}`,
36
      Accept: "application/json",
37
    },
38
  })
39

40
  if (!response.ok) {
41
    throw new Error(`${response.status} ${await response.text()}`)
42
  }
43

44
  return await response.json()
45
}
46

Other submissions
  • Submitted by hugo697 Typescript (fetch-only)
    Created 525 days ago
    1
    type Jira = {
    2
      username: string;
    3
      password: string;
    4
      domain: string;
    5
    };
    6
    /**
    7
     * Get comments
    8
     * Returns all comments for an issue.
    9
     */
    10
    export async function main(
    11
      auth: Jira,
    12
      issueIdOrKey: string,
    13
      startAt: string | undefined,
    14
      maxResults: string | undefined,
    15
      orderBy: "created" | "-created" | "+created" | undefined,
    16
      expand: string | undefined
    17
    ) {
    18
      const url = new URL(
    19
        `https://${auth.domain}.atlassian.net/rest/api/2/issue/${issueIdOrKey}/comment`
    20
      );
    21
      for (const [k, v] of [
    22
        ["startAt", startAt],
    23
        ["maxResults", maxResults],
    24
        ["orderBy", orderBy],
    25
        ["expand", expand],
    26
      ]) {
    27
        if (v !== undefined && v !== "") {
    28
          url.searchParams.append(k, v);
    29
        }
    30
      }
    31
      const response = await fetch(url, {
    32
        method: "GET",
    33
        headers: {
    34
          Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
    35
        },
    36
        body: undefined,
    37
      });
    38
      if (!response.ok) {
    39
        const text = await response.text();
    40
        throw new Error(`${response.status} ${text}`);
    41
      }
    42
      return await response.json();
    43
    }
    44