main
ts 219 lines 6.17 KB
Raw
1 import type {
2 AvailableChecksResponse,
3 DeleteResponse,
4 GitHubAuditBaselineCreate,
5 GitHubAuditBaselineResponse,
6 GitHubAuditConfigCreate,
7 GitHubAuditConfigResponse,
8 GitHubAuditConfigUpdate,
9 GitHubAuditExclusionCreate,
10 GitHubAuditExclusionResponse,
11 GitHubAuditExclusionUpdate,
12 GitHubAuditReportListResponse,
13 GitHubAuditReportResponse,
14 GitHubAuditRequest,
15 GitHubAuditResponse,
16 GitHubAuditSummaryResponse
17 } from "@/types/githubAudit.d"
18 import { HttpClient } from "../httpClient"
19
20 const BASE_PATH = "/github-audit"
21
22 // TODO-FE: refactor
23 export default {
24 // ==================== Configuration Endpoints ====================
25
26 /**
27 * Create a new GitHub Audit configuration
28 */
29 createConfig(config: GitHubAuditConfigCreate, signal?: AbortSignal) {
30 return HttpClient.post<GitHubAuditConfigResponse>(`${BASE_PATH}/config`, config, { signal })
31 },
32
33 /**
34 * Get all GitHub Audit configurations
35 */
36 getConfigs(customerCode?: string, signal?: AbortSignal) {
37 const params = customerCode ? { customer_code: customerCode } : undefined
38 return HttpClient.get<GitHubAuditConfigResponse>(`${BASE_PATH}/config`, { params, signal })
39 },
40
41 /**
42 * Get a specific GitHub Audit configuration by ID
43 */
44 getConfig(configId: number, signal?: AbortSignal) {
45 return HttpClient.get<GitHubAuditConfigResponse>(`${BASE_PATH}/config/${configId}`, {
46 signal
47 })
48 },
49
50 /**
51 * Update a GitHub Audit configuration
52 */
53 updateConfig(configId: number, config: GitHubAuditConfigUpdate, signal?: AbortSignal) {
54 return HttpClient.put<GitHubAuditConfigResponse>(`${BASE_PATH}/config/${configId}`, config, {
55 signal
56 })
57 },
58
59 /**
60 * Delete a GitHub Audit configuration
61 */
62 deleteConfig(configId: number, signal?: AbortSignal) {
63 return HttpClient.delete<DeleteResponse>(`${BASE_PATH}/config/${configId}`, { signal })
64 },
65
66 // ==================== Audit Execution Endpoints ====================
67
68 /**
69 * Run a GitHub audit using a saved configuration
70 */
71 runAuditFromConfig(configId: number, signal?: AbortSignal) {
72 return HttpClient.post<GitHubAuditResponse>(`${BASE_PATH}/config/${configId}/audit`, {}, { signal })
73 },
74
75 /**
76 * Run a one-time GitHub audit without saving config
77 */
78 runAuditAdhoc(request: GitHubAuditRequest, githubToken: string, signal?: AbortSignal) {
79 return HttpClient.post<GitHubAuditResponse>(`${BASE_PATH}/audit`, request, {
80 params: { github_token: githubToken },
81 signal
82 })
83 },
84
85 /**
86 * Run a GitHub audit from config and return summary only
87 */
88 runAuditSummaryFromConfig(configId: number, signal?: AbortSignal) {
89 return HttpClient.post<GitHubAuditSummaryResponse>(
90 `${BASE_PATH}/config/${configId}/audit/summary`,
91 {},
92 { signal }
93 )
94 },
95
96 // ==================== Report Endpoints ====================
97
98 /**
99 * Get list of GitHub audit reports with optional filters
100 */
101 getReports(
102 options?: {
103 customerCode?: string
104 configId?: number
105 organization?: string
106 status?: string
107 limit?: number
108 offset?: number
109 },
110 signal?: AbortSignal
111 ) {
112 const params: Record<string, string | number> = {}
113 if (options?.customerCode) params.customer_code = options.customerCode
114 if (options?.configId) params.config_id = options.configId
115 if (options?.organization) params.organization = options.organization
116 if (options?.status) params.status = options.status
117 if (options?.limit) params.limit = options.limit
118 if (options?.offset) params.offset = options.offset
119
120 return HttpClient.get<GitHubAuditReportListResponse>(`${BASE_PATH}/reports`, {
121 params,
122 signal
123 })
124 },
125
126 /**
127 * Get a specific GitHub audit report with full details
128 */
129 getReport(reportId: number, signal?: AbortSignal) {
130 return HttpClient.get<GitHubAuditReportResponse>(`${BASE_PATH}/reports/${reportId}`, {
131 signal
132 })
133 },
134
135 /**
136 * Delete a GitHub audit report
137 */
138 deleteReport(reportId: number, signal?: AbortSignal) {
139 return HttpClient.delete<DeleteResponse>(`${BASE_PATH}/reports/${reportId}`, { signal })
140 },
141
142 // ==================== Exclusion Endpoints ====================
143
144 /**
145 * Create an exclusion rule for a specific check
146 */
147 createExclusion(configId: number, exclusion: GitHubAuditExclusionCreate, signal?: AbortSignal) {
148 return HttpClient.post<GitHubAuditExclusionResponse>(`${BASE_PATH}/config/${configId}/exclusions`, exclusion, {
149 signal
150 })
151 },
152
153 /**
154 * Get all exclusion rules for a configuration
155 */
156 getExclusions(configId: number, includeExpired?: boolean, signal?: AbortSignal) {
157 const params = includeExpired !== undefined ? { include_expired: includeExpired } : undefined
158 return HttpClient.get<GitHubAuditExclusionResponse>(`${BASE_PATH}/config/${configId}/exclusions`, {
159 params,
160 signal
161 })
162 },
163
164 /**
165 * Update an exclusion rule
166 */
167 updateExclusion(exclusionId: number, exclusion: GitHubAuditExclusionUpdate, signal?: AbortSignal) {
168 return HttpClient.put<GitHubAuditExclusionResponse>(`${BASE_PATH}/exclusions/${exclusionId}`, exclusion, {
169 signal
170 })
171 },
172
173 /**
174 * Delete an exclusion rule
175 */
176 deleteExclusion(exclusionId: number, signal?: AbortSignal) {
177 return HttpClient.delete<DeleteResponse>(`${BASE_PATH}/exclusions/${exclusionId}`, {
178 signal
179 })
180 },
181
182 // ==================== Baseline Endpoints ====================
183
184 /**
185 * Create a baseline from a previous audit report
186 */
187 createBaseline(configId: number, baseline: GitHubAuditBaselineCreate, signal?: AbortSignal) {
188 return HttpClient.post<GitHubAuditBaselineResponse>(`${BASE_PATH}/config/${configId}/baselines`, baseline, {
189 signal
190 })
191 },
192
193 /**
194 * Get all baselines for a configuration
195 */
196 getBaselines(configId: number, activeOnly?: boolean, signal?: AbortSignal) {
197 const params = activeOnly !== undefined ? { active_only: activeOnly } : undefined
198 return HttpClient.get<GitHubAuditBaselineResponse>(`${BASE_PATH}/config/${configId}/baselines`, {
199 params,
200 signal
201 })
202 },
203
204 /**
205 * Delete a baseline
206 */
207 deleteBaseline(baselineId: number, signal?: AbortSignal) {
208 return HttpClient.delete<DeleteResponse>(`${BASE_PATH}/baselines/${baselineId}`, { signal })
209 },
210
211 // ==================== Reference Endpoints ====================
212
213 /**
214 * Get list of all available audit checks
215 */
216 getAvailableChecks(signal?: AbortSignal) {
217 return HttpClient.get<AvailableChecksResponse>(`${BASE_PATH}/checks`, { signal })
218 }
219 }