import { normalizeUserLocator, pickAuthInput, request } from '../core.ts'
import { asRecord, pageMeta, pickQuery, slimRecordingMeeting } from '../shape.ts'
const QUERY_KEYS = [
'from',
'to',
'page_size',
'next_page_token',
'mc',
'trash',
'trash_type',
'meeting_id',
] as const
/**
* List cloud recordings for a Zoom user. Defaults to `userId: "me"`.
*
* Pass `from` / `to` as `yyyy-MM-dd` when you need a date window.
*
* @example
* import listZoomRecordings from 'kody:@kody/zoom/recordings/list'
* const result = await listZoomRecordings({ from: '2030-01-01', to: '2030-01-31' })
*/
export default async function listZoomRecordings(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}/recordings`,
query,
throwOnError: true,
})
const data = asRecord(response.data)
const items = Array.isArray(data.meetings)
? data.meetings.map((item) => slimRecordingMeeting(asRecord(item)))
: []
return {
items,
userId,
from: typeof data.from === 'string' ? data.from : null,
to: typeof data.to === 'string' ? data.to : null,
...pageMeta(data),
auth: response.auth,
}
}