//native
export type DynSelect_group_key = string
// Dropdown of every group in the account (email + name).
export async function group_key(auth: RT.Gworkspace) {
const groups: { email: string; name: string }[] = []
let pageToken = ""
do {
const url = new URL("https://admin.googleapis.com/admin/directory/v1/groups")
url.searchParams.append("customer", "my_customer")
url.searchParams.append("maxResults", "200")
if (pageToken) url.searchParams.append("pageToken", pageToken)
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
const page = (await response.json()) as {
groups?: { email: string; name: string }[]
nextPageToken?: string
}
groups.push(...(page.groups ?? []))
pageToken = page.nextPageToken ?? ""
} while (pageToken)
return groups.map((g) => ({ value: g.email, label: `${g.name} (${g.email})` }))
}
/**
* Remove Group Member
* Remove a member (by email or unique ID) from a group.
*/
export async function main(
auth: RT.Gworkspace,
group_key: DynSelect_group_key,
member_key: string,
) {
const response = await fetch(
`https://admin.googleapis.com/admin/directory/v1/groups/${encodeURIComponent(group_key)}/members/${encodeURIComponent(member_key)}`,
{
method: "DELETE",
headers: { Authorization: `Bearer ${auth.token}` },
},
)
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
return { success: true }
}
Submitted by hugo989 1 hour ago