//native
/**
* Search Community Posts
* Search Help Center community posts by text, optionally within one topic. Dates are `YYYY-MM-DD`. Offset-paged (`page`, up to 100 per page, first 100 pages only).
*/
export async function main(
auth: RT.Zendesk,
query: string,
topic_id: number | undefined,
created_after: string | undefined,
created_before: string | undefined,
updated_after: string | undefined,
updated_before: string | undefined,
sort_by: "created_at" | "updated_at" | undefined,
sort_order: "asc" | "desc" | undefined,
page: number | undefined,
per_page: number | undefined
) {
const url = new URL(
`https://${auth.subdomain}.zendesk.com/api/v2/help_center/community_posts/search`
)
const params = {
query,
topic: topic_id,
created_after,
created_before,
updated_after,
updated_before,
sort_by,
sort_order,
page: page || 1,
per_page: per_page || 25,
}
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 2 hours ago