1
//native
2
type Discourse = {
3
apiKey: string;
4
defaultHost: string;
5
apiUsername: string;
6
};
7
/**
8
* Create badge
9
*
10
*/
11
export async function main(
12
auth: Discourse,
13
body: { name: string; badge_type_id: number },
14
) {
15
const url = new URL(`https://${auth.defaultHost}/admin/badges.json`);
16
17
const response = await fetch(url, {
18
method: "POST",
19
headers: {
20
"Content-Type": "application/json",
21
"API-KEY": auth.apiKey,
22
"API-USERNAME": auth.apiUsername,
23
},
24
body: JSON.stringify(body),
25
});
26
if (!response.ok) {
27
const text = await response.text();
28
throw new Error(`${response.status} ${text}`);
29
}
30
return await response.json();
31
32