Skip to content
← Public packages

@charlesmatte/granola

Search and read Granola meeting notes, summaries and transcripts from any agent; manage webhooks and legal holds safely.

src/legal-holds/list.ts

20 lines · 1.4 KB · TypeScript
Raw
import { listEndpoint, pageSpec, parseWithAccount } from '../lib/api.ts'

/**
 * List legal holds in the workspace, newest first, including released ones (`released_at` set)
 * (`GET /v1/legal-holds`). Needs a Legal hold API key (Enterprise); see https://docs.granola.ai/legal-holds
 *
 * @param input.account - Account whose secret holds a Legal hold API key. Required. @param input.secretName - Secret override.
 * @param input.limit - Max holds (1-1000, default 100). @param input.paginate - Follow cursors (default true). @param input.cursor - Resume.
 * @returns `{ account, count, legalHolds: [{ id, name, description, covers_entire_workspace, custodian_count, created_at, released_at }], hasMore, cursor }`
 *
 * @example
 * import listHolds from 'kody:@charlesmatte/granola/legal-holds/list'
 *
 * const { legalHolds } = await listHolds({ account: 'work-legal' })
 */
export default async function listGranolaLegalHolds(input: unknown) {
	const p = parseWithAccount<{ limit?: number; cursor?: string; paginate?: boolean }>(input, pageSpec(1000), 'legal-holds/list')
	const r = await listEndpoint(p.acct, { path: '/v1/legal-holds', itemsKey: 'legal_holds', limit: p.limit ?? 100, maxPageSize: 30, cursor: p.cursor, paginate: p.paginate ?? true })
	return { account: p.acct.account, count: r.count, legalHolds: r.items, hasMore: r.hasMore, cursor: r.cursor, pages: r.pages }
}