import { normalizeUserLocator, pickAuthInput, request } from '../core.ts' import { asRecord, pageMeta, pickQuery, slimMeeting } from '../shape.ts' const QUERY_KEYS = ['type', 'page_size', 'page_number', 'next_page_token', 'from', 'to'] as const /** * List meetings for a Zoom user. Defaults to `userId: "me"`. * * @example * import listZoomMeetings from 'kody:@kody/zoom/meetings/list' * const result = await listZoomMeetings({ type: 'upcoming', page_size: 30 }) */ export default async function listZoomMeetings(params: Record = {}) { const auth = pickAuthInput(params) const { userId } = normalizeUserLocator(params) const query = pickQuery(params, QUERY_KEYS) const response = await request>({ ...auth, path: `/users/${userId}/meetings`, query, throwOnError: true, }) const data = asRecord(response.data) const items = Array.isArray(data.meetings) ? data.meetings.map((item) => slimMeeting(asRecord(item))) : [] return { items, userId, ...pageMeta(data), auth: response.auth, } }