0

Replace issue field option

by
Published Nov 2, 2023

Deselects an issue-field select-list option from all issues where it is selected.

Script jira
  • 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
     * Replace issue field option
    8
     * Deselects an issue-field select-list option from all issues where it is selected.
    9
     */
    10
    export async function main(
    11
      auth: Jira,
    12
      fieldKey: string,
    13
      optionId: string,
    14
      replaceWith: string | undefined,
    15
      jql: string | undefined,
    16
      overrideScreenSecurity: string | undefined,
    17
      overrideEditableFlag: string | undefined
    18
    ) {
    19
      const url = new URL(
    20
        `https://${auth.domain}.atlassian.net/rest/api/2/field/${fieldKey}/option/${optionId}/issue`
    21
      );
    22
      for (const [k, v] of [
    23
        ["replaceWith", replaceWith],
    24
        ["jql", jql],
    25
        ["overrideScreenSecurity", overrideScreenSecurity],
    26
        ["overrideEditableFlag", overrideEditableFlag],
    27
      ]) {
    28
        if (v !== undefined && v !== "") {
    29
          url.searchParams.append(k, v);
    30
        }
    31
      }
    32
      const response = await fetch(url, {
    33
        method: "DELETE",
    34
        headers: {
    35
          Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
    36
        },
    37
        body: undefined,
    38
      });
    39
      if (!response.ok) {
    40
        const text = await response.text();
    41
        throw new Error(`${response.status} ${text}`);
    42
      }
    43
      return await response.text();
    44
    }
    45