//native
/**
* List Macros
* List the account's macros, active and inactive. Offset-paged (`page`, up to 100 per page).
*/
export async function main(
auth: RT.Zendesk,
active: "true" | "false" | undefined,
access: "personal" | "agents" | "shared" | "account" | undefined,
category: number | undefined,
group_id: number | undefined,
sort_by:
| "alphabetical"
| "created_at"
| "updated_at"
| "usage_1h"
| "usage_24h"
| "usage_7d"
| "usage_30d"
| undefined,
sort_order: "asc" | "desc" | undefined,
page: number | undefined,
per_page: number | undefined
) {
const url = new URL(`https://${auth.subdomain}.zendesk.com/api/v2/macros`)
const params = {
active,
access,
category,
group_id,
sort_by,
sort_order,
page: page || 1,
per_page: per_page || 100,
}
for (const [key, value] of Object.entries(params)) {
if (value != null && value !== "") {
url.searchParams.append(key, String(value))
}
}
const response = await fetch(url, {
headers: {
Authorization: auth.token
? `Bearer ${auth.token}`
: `Basic ${btoa(`${auth.username}:${auth.password}`)}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
return await response.json()
}
Submitted by hugo989 5 days ago