1 | type Bitbucket = { |
2 | username: string; |
3 | password: string; |
4 | }; |
5 | |
6 | * Create a comment on an issue |
7 | * Creates a new issue comment. |
8 |
|
9 | ``` |
10 | $ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/issues/42/comments/ \ |
11 | -X POST -u evzijst \ |
12 | -H 'Content-Type: application/json' \ |
13 | -d '{"content": {"raw": "Lorem ipsum."}}' |
14 | ``` |
15 | */ |
16 | export async function main( |
17 | auth: Bitbucket, |
18 | issue_id: string, |
19 | repo_slug: string, |
20 | workspace: string, |
21 | body: ({ type: string; [k: string]: unknown } & { |
22 | id?: number; |
23 | created_on?: string; |
24 | updated_on?: string; |
25 | content?: { |
26 | raw?: string; |
27 | markup?: "markdown" | "creole" | "plaintext"; |
28 | html?: string; |
29 | }; |
30 | user?: { type: string; [k: string]: unknown } & { |
31 | links?: { |
32 | avatar?: { href?: string; name?: string }; |
33 | [k: string]: unknown; |
34 | }; |
35 | created_on?: string; |
36 | display_name?: string; |
37 | username?: string; |
38 | uuid?: string; |
39 | [k: string]: unknown; |
40 | }; |
41 | deleted?: boolean; |
42 | parent?: unknown; |
43 | inline?: { from?: number; to?: number; path: string }; |
44 | links?: { |
45 | self?: { href?: string; name?: string }; |
46 | html?: { href?: string; name?: string }; |
47 | code?: { href?: string; name?: string }; |
48 | }; |
49 | [k: string]: unknown; |
50 | }) & { |
51 | issue?: { type: string; [k: string]: unknown } & { |
52 | links?: { |
53 | self?: { href?: string; name?: string }; |
54 | html?: { href?: string; name?: string }; |
55 | comments?: { href?: string; name?: string }; |
56 | attachments?: { href?: string; name?: string }; |
57 | watch?: { href?: string; name?: string }; |
58 | vote?: { href?: string; name?: string }; |
59 | }; |
60 | id?: number; |
61 | repository?: { type: string; [k: string]: unknown } & { |
62 | links?: { |
63 | self?: { href?: string; name?: string }; |
64 | html?: { href?: string; name?: string }; |
65 | avatar?: { href?: string; name?: string }; |
66 | pullrequests?: { href?: string; name?: string }; |
67 | commits?: { href?: string; name?: string }; |
68 | forks?: { href?: string; name?: string }; |
69 | watchers?: { href?: string; name?: string }; |
70 | downloads?: { href?: string; name?: string }; |
71 | clone?: { href?: string; name?: string }[]; |
72 | hooks?: { href?: string; name?: string }; |
73 | }; |
74 | uuid?: string; |
75 | full_name?: string; |
76 | is_private?: boolean; |
77 | parent?: unknown; |
78 | scm?: "git"; |
79 | owner?: { type: string; [k: string]: unknown } & { |
80 | links?: { |
81 | avatar?: { href?: string; name?: string }; |
82 | [k: string]: unknown; |
83 | }; |
84 | created_on?: string; |
85 | display_name?: string; |
86 | username?: string; |
87 | uuid?: string; |
88 | [k: string]: unknown; |
89 | }; |
90 | name?: string; |
91 | description?: string; |
92 | created_on?: string; |
93 | updated_on?: string; |
94 | size?: number; |
95 | language?: string; |
96 | has_issues?: boolean; |
97 | has_wiki?: boolean; |
98 | fork_policy?: "allow_forks" | "no_public_forks" | "no_forks"; |
99 | project?: { type: string; [k: string]: unknown } & { |
100 | links?: { |
101 | html?: { href?: string; name?: string }; |
102 | avatar?: { href?: string; name?: string }; |
103 | }; |
104 | uuid?: string; |
105 | key?: string; |
106 | owner?: ({ type: string; [k: string]: unknown } & { |
107 | links?: { |
108 | avatar?: { href?: string; name?: string }; |
109 | [k: string]: unknown; |
110 | }; |
111 | created_on?: string; |
112 | display_name?: string; |
113 | username?: string; |
114 | uuid?: string; |
115 | [k: string]: unknown; |
116 | }) & { |
117 | links?: { |
118 | avatar?: { href?: string; name?: string }; |
119 | [k: string]: unknown; |
120 | } & { |
121 | self?: { href?: string; name?: string }; |
122 | html?: { href?: string; name?: string }; |
123 | members?: { href?: string; name?: string }; |
124 | projects?: { href?: string; name?: string }; |
125 | repositories?: { href?: string; name?: string }; |
126 | [k: string]: unknown; |
127 | }; |
128 | [k: string]: unknown; |
129 | }; |
130 | name?: string; |
131 | description?: string; |
132 | is_private?: boolean; |
133 | created_on?: string; |
134 | updated_on?: string; |
135 | has_publicly_visible_repos?: boolean; |
136 | [k: string]: unknown; |
137 | }; |
138 | mainbranch?: { |
139 | type: string; |
140 | links?: { |
141 | self?: { href?: string; name?: string }; |
142 | commits?: { href?: string; name?: string }; |
143 | html?: { href?: string; name?: string }; |
144 | }; |
145 | name?: string; |
146 | target?: ({ type: string; [k: string]: unknown } & { |
147 | hash?: string; |
148 | date?: string; |
149 | author?: { type: string; [k: string]: unknown } & { |
150 | raw?: string; |
151 | user?: { type: string; [k: string]: unknown } & { |
152 | links?: { |
153 | avatar?: { href?: string; name?: string }; |
154 | [k: string]: unknown; |
155 | }; |
156 | created_on?: string; |
157 | display_name?: string; |
158 | username?: string; |
159 | uuid?: string; |
160 | [k: string]: unknown; |
161 | }; |
162 | [k: string]: unknown; |
163 | }; |
164 | message?: string; |
165 | summary?: { |
166 | raw?: string; |
167 | markup?: "markdown" | "creole" | "plaintext"; |
168 | html?: string; |
169 | }; |
170 | parents?: unknown[]; |
171 | [k: string]: unknown; |
172 | }) & { |
173 | repository?: unknown; |
174 | participants?: ({ type: string; [k: string]: unknown } & { |
175 | user?: { type: string; [k: string]: unknown } & { |
176 | links?: { |
177 | avatar?: { href?: string; name?: string }; |
178 | [k: string]: unknown; |
179 | }; |
180 | created_on?: string; |
181 | display_name?: string; |
182 | username?: string; |
183 | uuid?: string; |
184 | [k: string]: unknown; |
185 | }; |
186 | role?: "PARTICIPANT" | "REVIEWER"; |
187 | approved?: boolean; |
188 | state?: "approved" | "changes_requested" | null; |
189 | participated_on?: string; |
190 | [k: string]: unknown; |
191 | })[]; |
192 | [k: string]: unknown; |
193 | }; |
194 | [k: string]: unknown; |
195 | } & { |
196 | merge_strategies?: ("merge_commit" | "squash" | "fast_forward")[]; |
197 | default_merge_strategy?: string; |
198 | [k: string]: unknown; |
199 | }; |
200 | [k: string]: unknown; |
201 | }; |
202 | title?: string; |
203 | reporter?: { type: string; [k: string]: unknown } & { |
204 | links?: { |
205 | avatar?: { href?: string; name?: string }; |
206 | [k: string]: unknown; |
207 | }; |
208 | created_on?: string; |
209 | display_name?: string; |
210 | username?: string; |
211 | uuid?: string; |
212 | [k: string]: unknown; |
213 | }; |
214 | assignee?: { type: string; [k: string]: unknown } & { |
215 | links?: { |
216 | avatar?: { href?: string; name?: string }; |
217 | [k: string]: unknown; |
218 | }; |
219 | created_on?: string; |
220 | display_name?: string; |
221 | username?: string; |
222 | uuid?: string; |
223 | [k: string]: unknown; |
224 | }; |
225 | created_on?: string; |
226 | updated_on?: string; |
227 | edited_on?: string; |
228 | state?: |
229 | | "submitted" |
230 | | "new" |
231 | | "open" |
232 | | "resolved" |
233 | | "on hold" |
234 | | "invalid" |
235 | | "duplicate" |
236 | | "wontfix" |
237 | | "closed"; |
238 | kind?: "bug" | "enhancement" | "proposal" | "task"; |
239 | priority?: "trivial" | "minor" | "major" | "critical" | "blocker"; |
240 | milestone?: { type: string; [k: string]: unknown } & { |
241 | links?: { self?: { href?: string; name?: string } }; |
242 | name?: string; |
243 | id?: number; |
244 | [k: string]: unknown; |
245 | }; |
246 | version?: { type: string; [k: string]: unknown } & { |
247 | links?: { self?: { href?: string; name?: string } }; |
248 | name?: string; |
249 | id?: number; |
250 | [k: string]: unknown; |
251 | }; |
252 | component?: { type: string; [k: string]: unknown } & { |
253 | links?: { self?: { href?: string; name?: string } }; |
254 | name?: string; |
255 | id?: number; |
256 | [k: string]: unknown; |
257 | }; |
258 | votes?: number; |
259 | content?: { |
260 | raw?: string; |
261 | markup?: "markdown" | "creole" | "plaintext"; |
262 | html?: string; |
263 | }; |
264 | [k: string]: unknown; |
265 | }; |
266 | [k: string]: unknown; |
267 | } |
268 | ) { |
269 | const url = new URL( |
270 | `https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}/issues/${issue_id}/comments` |
271 | ); |
272 |
|
273 | const response = await fetch(url, { |
274 | method: "POST", |
275 | headers: { |
276 | "Content-Type": "application/json", |
277 | Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`), |
278 | }, |
279 | body: JSON.stringify(body), |
280 | }); |
281 | if (!response.ok) { |
282 | const text = await response.text(); |
283 | throw new Error(`${response.status} ${text}`); |
284 | } |
285 | return await response.text(); |
286 | } |
287 |
|