Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/zoom

src/users/list.ts

32 lines · 1.0 KB · TypeScript
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<string, unknown> = {}) {
	const auth = pickAuthInput(params)
	const query = pickQuery(params, QUERY_KEYS)
	const response = await request<Record<string, unknown>>({
		...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,
	}
}