1 | |
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 |
|