1 | |
2 |
|
3 | |
4 | * List Active Macros |
5 | * List the active macros the agent can apply. Offset-paged (`page`, up to 100 per page). |
6 | */ |
7 | export async function main( |
8 | auth: RT.Zendesk, |
9 | access: "personal" | "agents" | "shared" | "account" | undefined, |
10 | category: number | undefined, |
11 | group_id: number | undefined, |
12 | sort_by: |
13 | | "alphabetical" |
14 | | "created_at" |
15 | | "updated_at" |
16 | | "usage_1h" |
17 | | "usage_24h" |
18 | | "usage_7d" |
19 | | "usage_30d" |
20 | | undefined, |
21 | sort_order: "asc" | "desc" | undefined, |
22 | page: number | undefined, |
23 | per_page: number | undefined |
24 | ) { |
25 | const url = new URL( |
26 | `https://${auth.subdomain}.zendesk.com/api/v2/macros/active` |
27 | ) |
28 | const params = { |
29 | access, |
30 | category, |
31 | group_id, |
32 | sort_by, |
33 | sort_order, |
34 | page: page || 1, |
35 | per_page: per_page || 100, |
36 | } |
37 | for (const [key, value] of Object.entries(params)) { |
38 | if (value != null && value !== "") { |
39 | url.searchParams.append(key, String(value)) |
40 | } |
41 | } |
42 |
|
43 | const response = await fetch(url, { |
44 | headers: { |
45 | Authorization: auth.token |
46 | ? `Bearer ${auth.token}` |
47 | : `Basic ${btoa(`${auth.username}:${auth.password}`)}`, |
48 | Accept: "application/json", |
49 | }, |
50 | }) |
51 |
|
52 | if (!response.ok) { |
53 | throw new Error(`${response.status} ${await response.text()}`) |
54 | } |
55 |
|
56 | return await response.json() |
57 | } |
58 |
|