Skip to content
← Public packages

@cameronpak/box

Full Box Public API v1 client: lifecycle, prompts, files, commands, snapshots, environments, webhooks, desktop, hosting, and account.

src/update-data-retention.ts

28 lines · 1.1 KB · TypeScript
import { boxRequest, type Result } from './client.ts'
import type { DataRetentionPolicy } from './types.ts'

export type UpdateDataRetentionInput = {
	enabled: boolean
	/** Required when enabling and must exactly equal `delete archived box data`. */
	confirmation?: string
}

/**
 * Enable or disable account zero data retention.
 * Official docs: this requires an interactive Box session and refuses API keys
 * (`403 session_required`). The package still calls the endpoint so a session
 * token mounted as boxApiKey can use it; a normal service key will fail.
 * Enabling also requires confirmation exactly equal to `delete archived box data`.
 * Disabling affects future archives only and cannot cancel accepted deletions.
 */
export default async function updateDataRetention(
	input: UpdateDataRetentionInput,
): Promise<Result<DataRetentionPolicy>> {
	const body: Record<string, unknown> = { enabled: input.enabled }
	if (input.confirmation !== undefined) body.confirmation = input.confirmation
	return boxRequest<DataRetentionPolicy>({
		path: '/account/data-retention',
		method: 'PATCH',
		body,
	})
}