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<string, unknown> = {}) {
const auth = pickAuthInput(params)
const { userId } = normalizeUserLocator(params)
const query = pickQuery(params, QUERY_KEYS)
const response = await request<Record<string, unknown>>({
...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,
}
}