0

Get Issue

by
Published Nov 2, 2023

Get an issue by ID or key. `fields` narrows the returned fields (`*all`, `*navigable`, or field IDs, `-` prefix to exclude); `expand` accepts a comma-separated list of `renderedFields`, `names`, `schema`, `transitions`, `editmeta`, `changelog`, `versionedRepresentations`.

Script jira Verified

The script

Submitted by hugo989 Typescript (fetch-only)
Verified 14 days ago
1
//native
2

3
/**
4
 * Get Issue
5
 * Get an issue by ID or key. `fields` narrows the returned fields (`*all`, `*navigable`, or field IDs, `-` prefix to exclude); `expand` accepts a comma-separated list of `renderedFields`, `names`, `schema`, `transitions`, `editmeta`, `changelog`, `versionedRepresentations`.
6
 */
7
export async function main(
8
  auth: RT.Jira,
9
  issue_id_or_key: string,
10
  fields: string[] | undefined,
11
  expand: string | undefined,
12
  properties: string[] | undefined,
13
  fields_by_keys: boolean | undefined,
14
  update_history: boolean | undefined
15
) {
16
  const url = new URL(
17
    `https://${auth.domain}.atlassian.net/rest/api/3/issue/${issue_id_or_key}`
18
  )
19
  if (fields?.length) {
20
    url.searchParams.append("fields", fields.join(","))
21
  }
22
  if (expand != null && expand !== "") {
23
    url.searchParams.append("expand", expand)
24
  }
25
  if (properties?.length) {
26
    url.searchParams.append("properties", properties.join(","))
27
  }
28
  if (fields_by_keys) {
29
    url.searchParams.append("fieldsByKeys", "true")
30
  }
31
  if (update_history) {
32
    url.searchParams.append("updateHistory", "true")
33
  }
34

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

43
  if (!response.ok) {
44
    throw new Error(`${response.status} ${await response.text()}`)
45
  }
46

47
  return await response.json()
48
}
49

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