import { isConfirmed, isDryRun, normalizeMeetingLocator, pickAuthInput, request } from '../core.ts'
/**
* Delete a Zoom meeting.
*
* Pass `dryRun: true` to preview the request. Live deletes require `confirm: true`.
*
* @example
* import deleteZoomMeeting from 'kody:@kody/zoom/meetings/delete'
* const preview = await deleteZoomMeeting({ meetingId: '11111111111', dryRun: true })
*/
export default async function deleteZoomMeeting(params: Record<string, unknown> = {}) {
const auth = pickAuthInput(params)
const { meetingId, occurrenceId } = normalizeMeetingLocator(params)
const scheduleOccurrence =
params.schedule_for_reminder === true || params.scheduleForReminder === true
if (isDryRun(params)) {
return {
dryRun: true,
wouldDelete: true,
meetingId,
occurrenceId: occurrenceId ?? null,
path: `/meetings/${meetingId}`,
auth,
}
}
if (!isConfirmed(params)) {
throw new Error(
`Deleting meeting ${meetingId} requires dryRun: true (preview) or confirm: true (live write).`,
)
}
const response = await request<unknown>({
...auth,
method: 'DELETE',
path: `/meetings/${meetingId}`,
query: {
...(occurrenceId ? { occurrence_id: occurrenceId } : {}),
...(scheduleOccurrence ? { schedule_for_reminder: true } : {}),
},
throwOnError: true,
confirm: true,
})
return {
ok: true,
meetingId,
status: response.status,
auth: response.auth,
}
}