mirror of
https://github.com/tale/headplane.git
synced 2026-07-26 07:48:14 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { defineApiEndpoints } from "../factory";
|
|
|
|
export interface PolicyEndpoints {
|
|
/**
|
|
* Retrieves the current ACL policy from the Headscale instance.
|
|
*
|
|
* @returns The ACL policy as a string and the date it was last updated.
|
|
*/
|
|
getPolicy(): Promise<{ policy: string; updatedAt: Date | null }>;
|
|
|
|
/**
|
|
* Sets the ACL policy for the Headscale instance.
|
|
*
|
|
* @param policy The ACL policy as a string.
|
|
* @returns The updated ACL policy as a string and the date it was last updated.
|
|
*/
|
|
setPolicy(policy: string): Promise<{ policy: string; updatedAt: Date }>;
|
|
}
|
|
|
|
export default defineApiEndpoints<PolicyEndpoints>((client, apiKey) => ({
|
|
getPolicy: async () => {
|
|
const { policy, updatedAt } = await client.apiFetch<{
|
|
policy: string;
|
|
updatedAt: string;
|
|
}>("GET", "v1/policy", apiKey);
|
|
|
|
return {
|
|
policy,
|
|
updatedAt: updatedAt !== null ? new Date(updatedAt) : null,
|
|
};
|
|
},
|
|
|
|
setPolicy: async (policy) => {
|
|
const { policy: newPolicy, updatedAt } = await client.apiFetch<{
|
|
policy: string;
|
|
updatedAt: string;
|
|
}>("PUT", "v1/policy", apiKey, { policy });
|
|
|
|
return { policy: newPolicy, updatedAt: new Date(updatedAt) };
|
|
},
|
|
}));
|