Files
roboco/panel/src/lib/api/settings.ts
T

39 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-06-12 23:11:01 +02:00
import api from "./client";
export interface SettingsResponse {
settings: Record<string, string>;
}
2026-06-17 16:35:43 +02:00
export interface FeatureFlag {
key: string;
label: string;
enabled: boolean;
}
export interface FeatureFlagsResponse {
flags: FeatureFlag[];
note: string;
}
2026-06-12 23:11:01 +02:00
export const settingsApi = {
// GET /api/settings — all runtime-editable settings as a flat key→value map.
getAll: async (): Promise<Record<string, string>> => {
const { data } = await api.get<SettingsResponse>("/settings");
return data.settings;
},
// PUT /api/settings/{key} — persist one setting; returns the full updated map.
update: async (key: string, value: string): Promise<Record<string, string>> => {
const { data } = await api.put<SettingsResponse>(`/settings/${key}`, { value });
return data.settings;
},
2026-06-17 16:35:43 +02:00
// GET /api/settings/feature-flags — effective flag values (override, else env).
getFeatureFlags: async (): Promise<FeatureFlagsResponse> => {
const { data } = await api.get<FeatureFlagsResponse>("/settings/feature-flags");
return data;
},
// PUT /api/settings/{key} — persist a feature flag as "true"/"false".
setFeatureFlag: async (key: string, enabled: boolean): Promise<void> => {
await api.put<SettingsResponse>(`/settings/${key}`, { value: enabled ? "true" : "false" });
},
2026-06-12 23:11:01 +02:00
};