import {OpenFlareBaseService} from './base.service'; import type { WAFIPGroup, WAFIPGroupAutoTestPayload, WAFIPGroupAutoTestResult, WAFIPGroupPayload, WAFIPGroupSyncResult, WAFRuleGroup, WAFRuleGroupPayload, WAFSiteRuleGroups, } from './types'; export class WafService extends OpenFlareBaseService { protected static override readonly basePath: string = '/api/v1/d/waf'; static async listRuleGroups(): Promise { return this.get('/rule-groups'); } static async getRuleGroup(id: number): Promise { return this.get(`/rule-groups/${id}`); } static async createRuleGroup(payload: WAFRuleGroupPayload): Promise { return this.post('/rule-groups', payload); } static async updateRuleGroup( id: number, payload: WAFRuleGroupPayload, ): Promise { return this.post(`/rule-groups/${id}/update`, payload); } static async deleteRuleGroup(id: number): Promise { return this.post(`/rule-groups/${id}/delete`); } static async updateRuleGroupSites(id: number, ids: number[]): Promise { return this.post(`/rule-groups/${id}/sites`, { ids }); } static async listSiteRuleGroups(routeId: number): Promise { return this.get(`/sites/${routeId}/rule-groups`); } static async updateSiteRuleGroups( routeId: number, ids: number[], ): Promise { return this.post(`/sites/${routeId}/rule-groups`, { ids, }); } static async listIPGroups(): Promise { return this.get('/ip-groups'); } static async getIPGroup(id: number): Promise { return this.get(`/ip-groups/${id}`); } static async createIPGroup(payload: WAFIPGroupPayload): Promise { return this.post('/ip-groups', payload); } static async updateIPGroup(id: number, payload: WAFIPGroupPayload): Promise { return this.post(`/ip-groups/${id}/update`, payload); } static async deleteIPGroup(id: number): Promise { return this.post(`/ip-groups/${id}/delete`); } static async testIPGroup( payload: WAFIPGroupAutoTestPayload, ): Promise { return this.post('/ip-groups/test', payload); } static async syncIPGroup(id: number): Promise { return this.post(`/ip-groups/${id}/sync`); } }