//native
/**
* List Users
* List or search the users of the Workspace account (e.g. query `orgUnitPath='/Sales' isSuspended=false` or `email:jane*`). Returns `users` and `nextPageToken`. Works with admin.directory.user or admin.directory.user.readonly.
*/
export async function main(
auth: RT.Gworkspace,
query: string | undefined,
domain: string | undefined,
order_by: "email" | "familyName" | "givenName" | undefined,
sort_order: "ASCENDING" | "DESCENDING" | undefined,
show_deleted: boolean = false,
max_results: number = 100,
page_token: string | undefined,
) {
const url = new URL("https://admin.googleapis.com/admin/directory/v1/users")
// users.list needs either domain or customer; my_customer = every domain of the admin's account
if (domain !== undefined && domain !== "") {
url.searchParams.append("domain", domain)
} else {
url.searchParams.append("customer", "my_customer")
}
for (const [k, v] of Object.entries({
query,
orderBy: order_by,
sortOrder: sort_order,
pageToken: page_token,
})) {
if (v !== undefined && v !== "") url.searchParams.append(k, v)
}
if (show_deleted) url.searchParams.append("showDeleted", "true")
url.searchParams.append("maxResults", String(max_results))
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
return await response.json()
}
Submitted by hugo989 1 hour ago