Files
gridpilot.gg/apps/website/lib/gateways/api/policy/PolicyApiClient.ts
2026-01-24 12:47:49 +01:00

28 lines
905 B
TypeScript

import type { ErrorReporter } from '../../../interfaces/ErrorReporter';
import type { Logger } from '../../../interfaces/Logger';
import { BaseApiClient } from '../base/BaseApiClient';
export type OperationalMode = 'normal' | 'maintenance' | 'test';
export type FeatureState = 'enabled' | 'disabled' | 'coming_soon' | 'hidden';
export type PolicySnapshotDto = {
policyVersion: number;
operationalMode: OperationalMode;
maintenanceAllowlist: {
view: string[];
mutate: string[];
};
capabilities: Record<string, FeatureState>;
loadedFrom: 'env' | 'file' | 'defaults';
loadedAtIso: string;
};
export class PolicyApiClient extends BaseApiClient {
constructor(baseUrl: string, errorReporter: ErrorReporter, logger: Logger) {
super(baseUrl, errorReporter, logger);
}
getSnapshot(): Promise<PolicySnapshotDto> {
return this.get<PolicySnapshotDto>('/policy/snapshot');
}
}