import { pickAuthInput, request } from '../core.ts' import { asRecord, pageMeta, pickQuery, slimUser } from '../shape.ts' const QUERY_KEYS = ['status', 'role_id', 'page_size', 'page_number', 'next_page_token', 'include_fields'] as const /** * List users on the Zoom account. * * Requires an account-level / admin scope (`user:read:list_users:admin`). * User-managed OAuth typically cannot list the whole account. * * @example * import listZoomUsers from 'kody:@kody/zoom/users/list' * const result = await listZoomUsers({ auth: 's2s', page_size: 30 }) */ export default async function listZoomUsers(params: Record = {}) { const auth = pickAuthInput(params) const query = pickQuery(params, QUERY_KEYS) const response = await request>({ ...auth, path: '/users', query, throwOnError: true, }) const data = asRecord(response.data) const items = Array.isArray(data.users) ? data.users.map((item) => slimUser(asRecord(item))) : [] return { items, ...pageMeta(data), auth: response.auth, } }