Skip to content

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

Package listing

@kody/sessionize

src/list-sessions.ts

29 lines · 944 B · TypeScript
import { assertEndpointId, fetchSessionizeView } from './client.ts'
import { flattenSessionGroups } from './project.ts'
import type {
	EndpointInput,
	SessionizeSessionGroup,
	SlimSession,
} from './types.ts'

/**
 * List flattened Sessionize sessions with room, speaker, and category names.
 *
 * @example
 * import listSessions from 'kody:@kody/sessionize/list-sessions'
 * const { items } = await listSessions({ endpointId: 'jl4ktls0' })
 * // => { endpointId: 'jl4ktls0', count: 10, items: [{ title: "Aiden's Keynote", ... }] }
 */
export default async function listSessions(input: EndpointInput): Promise<{
	endpointId: string
	count: number
	items: Array<SlimSession>
}> {
	const endpointId = assertEndpointId(input.endpointId)
	const groups = await fetchSessionizeView<Array<SessionizeSessionGroup>>({
		endpointId,
		view: 'Sessions',
	})
	const items = flattenSessionGroups(groups)
	return { endpointId, count: items.length, items }
}