Skip to content

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

Package listing

@kody/sessionize

src/list-speakers.ts

29 lines · 957 B · TypeScript
import { assertEndpointId, fetchSessionizeView } from './client.ts'
import { slimSpeakerFromListed } from './project.ts'
import type {
	EndpointInput,
	SessionizeListedSpeaker,
	SlimSpeaker,
} from './types.ts'

/**
 * List Sessionize speakers with session titles and public links.
 *
 * @example
 * import listSpeakers from 'kody:@kody/sessionize/list-speakers'
 * const { items } = await listSpeakers({ endpointId: 'jl4ktls0' })
 * // => { count: 10, items: [{ fullName: 'Aiden Test', sessionTitles: [...] }] }
 */
export default async function listSpeakers(input: EndpointInput): Promise<{
	endpointId: string
	count: number
	items: Array<SlimSpeaker>
}> {
	const endpointId = assertEndpointId(input.endpointId)
	const speakers = await fetchSessionizeView<Array<SessionizeListedSpeaker>>({
		endpointId,
		view: 'Speakers',
	})
	const items = speakers.map((speaker) => slimSpeakerFromListed(speaker))
	return { endpointId, count: items.length, items }
}