import { fetchJson } from "./client"; import type { AdminSecretsDetailResponse, AdminSecretsEventsResponse, AdminSecretsListResponse, AdminSecretsPlanRequest, AdminSecretsPlanResponse, AdminSecretsSummaryResponse, ApiResult } from "@/types"; export const adminSecretsAPI = { summary: (): Promise> => fetchJson("/v1/admin/secrets/summary", { timeoutMs: 12000, timeoutName: "admin secrets summary" }), externalSecrets: (params: { node?: string; lane?: string; namespace?: string } = {}): Promise> => fetchJson(`/v1/admin/secrets/external-secrets${query(params)}`, { timeoutMs: 12000, timeoutName: "admin secrets list" }), detail: (namespace: string, name: string): Promise> => fetchJson(`/v1/admin/secrets/external-secrets/${encodeURIComponent(namespace)}/${encodeURIComponent(name)}`, { timeoutMs: 12000, timeoutName: "admin secrets detail" }), events: (params: { namespace?: string; name?: string; limit?: number } = {}): Promise> => fetchJson(`/v1/admin/secrets/events${query(params)}`, { timeoutMs: 12000, timeoutName: "admin secrets events" }), plan: (payload: AdminSecretsPlanRequest): Promise> => fetchJson("/v1/admin/secrets/external-secrets/plan", { method: "POST", body: JSON.stringify(payload), timeoutMs: 12000, timeoutName: "admin secrets plan" }) }; function query(params: Record): string { const search = new URLSearchParams(); for (const [key, value] of Object.entries(params)) { const text = String(value ?? "").trim(); if (text) search.set(key, text); } const body = search.toString(); return body ? `?${body}` : ""; }