Set custom field contexts default values

Sets default for contexts of a custom field.

Script jira Verified

by hugo697 ยท 11/2/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 396 days ago
1
type Jira = {
2
  username: string;
3
  password: string;
4
  domain: string;
5
};
6
/**
7
 * Set custom field contexts default values
8
 * Sets default for contexts of a custom field.
9
 */
10
export async function main(
11
  auth: Jira,
12
  fieldId: string,
13
  body: {
14
    defaultValues?: (
15
      | {
16
          cascadingOptionId?: string;
17
          contextId: string;
18
          optionId: string;
19
          type: string;
20
          [k: string]: unknown;
21
        }
22
      | {
23
          contextId: string;
24
          optionIds: string[];
25
          type: string;
26
          [k: string]: unknown;
27
        }
28
      | {
29
          contextId: string;
30
          optionId: string;
31
          type: string;
32
          [k: string]: unknown;
33
        }
34
      | {
35
          accountId: string;
36
          contextId: string;
37
          type: string;
38
          userFilter: {
39
            enabled: boolean;
40
            groups?: string[];
41
            roleIds?: number[];
42
            [k: string]: unknown;
43
          };
44
          [k: string]: unknown;
45
        }
46
      | {
47
          accountIds: string[];
48
          contextId: string;
49
          type: string;
50
          [k: string]: unknown;
51
        }
52
      | {
53
          contextId: string;
54
          groupId: string;
55
          type: string;
56
          [k: string]: unknown;
57
        }
58
      | {
59
          contextId: string;
60
          groupIds: string[];
61
          type: string;
62
          [k: string]: unknown;
63
        }
64
      | {
65
          date?: string;
66
          type: string;
67
          useCurrent?: boolean;
68
          [k: string]: unknown;
69
        }
70
      | {
71
          dateTime?: string;
72
          type: string;
73
          useCurrent?: boolean;
74
          [k: string]: unknown;
75
        }
76
      | { contextId: string; type: string; url: string; [k: string]: unknown }
77
      | {
78
          contextId: string;
79
          projectId: string;
80
          type: string;
81
          [k: string]: unknown;
82
        }
83
      | { number: number; type: string; [k: string]: unknown }
84
      | { labels: string[]; type: string; [k: string]: unknown }
85
      | { text?: string; type: string; [k: string]: unknown }
86
      | { text?: string; type: string; [k: string]: unknown }
87
      | { text?: string; type: string; [k: string]: unknown }
88
      | {
89
          type: string;
90
          versionId: string;
91
          versionOrder?: string;
92
          [k: string]: unknown;
93
        }
94
      | {
95
          type: string;
96
          versionIds: string[];
97
          versionOrder?: string;
98
          [k: string]: unknown;
99
        }
100
      | { contextId: string; text?: string; type: string; [k: string]: unknown }
101
      | { type: string; values?: string[]; [k: string]: unknown }
102
      | {
103
          object?: { [k: string]: unknown };
104
          type: string;
105
          [k: string]: unknown;
106
        }
107
      | {
108
          contextId: string;
109
          dateTime?: string;
110
          type: string;
111
          useCurrent?: boolean;
112
          [k: string]: unknown;
113
        }
114
      | {
115
          contextId: string;
116
          groupId: string;
117
          type: string;
118
          [k: string]: unknown;
119
        }
120
      | {
121
          contextId: string;
122
          groupIds: string[];
123
          type: string;
124
          [k: string]: unknown;
125
        }
126
      | {
127
          contextId: string;
128
          number: number;
129
          type: string;
130
          [k: string]: unknown;
131
        }
132
      | {
133
          accountId: string;
134
          contextId: string;
135
          type: string;
136
          userFilter: {
137
            enabled: boolean;
138
            groups?: string[];
139
            roleIds?: number[];
140
            [k: string]: unknown;
141
          };
142
          [k: string]: unknown;
143
        }
144
      | {
145
          accountIds: string[];
146
          contextId: string;
147
          type: string;
148
          [k: string]: unknown;
149
        }
150
    )[];
151
  }
152
) {
153
  const url = new URL(
154
    `https://${auth.domain}.atlassian.net/rest/api/2/field/${fieldId}/context/defaultValue`
155
  );
156

157
  const response = await fetch(url, {
158
    method: "PUT",
159
    headers: {
160
      "Content-Type": "application/json",
161
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
162
    },
163
    body: JSON.stringify(body),
164
  });
165
  if (!response.ok) {
166
    const text = await response.text();
167
    throw new Error(`${response.status} ${text}`);
168
  }
169
  return await response.json();
170
}
171