import { Result } from '@webapp/util/fp'; import type { ZodError } from 'zod'; import { APIKeys, apikeyModel, apiKeysSchema, APIKey, } from '@webapp/models/apikeys'; import { request, parseResponse } from './base'; import type { RequestError } from './base'; export interface FetchAPIKeysError { message?: string; } export async function fetchAPIKeys(): Promise< Result > { const response = await request('/api/keys'); return parseResponse(response, apiKeysSchema); } export async function createAPIKey(data: { name: string; role: string; ttlSeconds: number; }): Promise> { const response = await request('/api/keys', { method: 'POST', body: JSON.stringify(data), }); return parseResponse(response, apikeyModel); } export async function deleteAPIKey(data: { id: number; }): Promise> { const response = await request(`/api/keys/${data.id}`, { method: 'DELETE', }); if (response.isOk) { return Result.ok(); } return Result.err(response.error); }