Files
getDomain/domain-web/src/api/modules.ts
2026-04-18 23:52:51 +08:00

203 lines
13 KiB
TypeScript

import http from "./http";
export const authApi = {
login: (payload: { username: string; password: string }) => http.post("/auth/login", payload)
};
export const dashboardApi = {
overview: () => http.get("/dashboard/overview")
};
export const runtimeApi = {
status: () => http.get("/runtime/status"),
readiness: () => http.get("/runtime/readiness"),
preflight: () => http.get("/runtime/preflight"),
cluster: () => http.get("/runtime/cluster"),
syncSummary: () => http.get("/runtime/sync-summary"),
debugOverview: (params?: Record<string, unknown>) => http.get("/runtime/debug-overview", { params }),
debugDiagnosis: (params?: Record<string, unknown>) => http.get("/runtime/debug-diagnosis", { params }),
debugHandoff: (params?: Record<string, unknown>) => http.get("/runtime/debug-handoff", { params }),
debugEvents: (params?: Record<string, unknown>) => http.get("/runtime/debug-events", { params }),
action: (action: string) => http.post(`/runtime/actions/${action}`)
};
export const opsApi = {
overview: () => http.get("/ops/overview"),
goLiveSummary: (params?: Record<string, unknown>) => http.get("/ops/go-live-summary", { params }),
doctorDecision: (params?: Record<string, unknown>) => http.get("/ops/doctor-decision", { params }),
goLiveSignoff: (params?: Record<string, unknown>) => http.get("/ops/go-live-signoff", { params }),
goLiveBundle: (params?: Record<string, unknown>) => http.get("/ops/go-live-bundle", { params }),
goLiveReview: (params?: Record<string, unknown>) => http.get("/ops/go-live-review", { params }),
stackDiagnosis: (params?: Record<string, unknown>) => http.get("/ops/stack-diagnosis", { params }),
linkSnapshot: () => http.get("/ops/link-snapshot"),
inspectionOverview: (params?: Record<string, unknown>) => http.get("/ops/inspection-overview", { params }),
activityStream: (params?: Record<string, unknown>) => http.get("/ops/activity-stream", { params }),
driverFeed: () => http.get("/ops/driver-feed"),
codexBrief: () => http.get("/ops/codex-brief"),
capabilities: () => http.get("/ops/capabilities"),
contracts: () => http.get("/ops/contracts"),
contractDetail: (contractKey: string) => http.get(`/ops/contracts/${encodeURIComponent(contractKey)}`),
actionTemplates: () => http.get("/ops/action-templates"),
playbooks: () => http.get("/ops/playbooks"),
playbookRuns: (params?: Record<string, unknown>) => http.get("/ops/playbook-runs", { params }),
playbookRunDetail: (runCode: string) => http.get(`/ops/playbook-runs/${encodeURIComponent(runCode)}`),
playbookRunEvents: (runCode: string, params?: Record<string, unknown>) =>
http.get(`/ops/playbook-runs/${encodeURIComponent(runCode)}/events`, { params }),
rerunPlaybookRun: (runCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/playbook-runs/${encodeURIComponent(runCode)}/rerun`, payload || {}),
cancelPlaybookRun: (runCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/playbook-runs/${encodeURIComponent(runCode)}/cancel`, payload || {}),
previewPlaybook: (payload: Record<string, unknown>) => http.post("/ops/playbooks/preview", payload),
executePlaybook: (payload: Record<string, unknown>) => http.post("/ops/playbooks/execute", payload),
blueprint: () => http.get("/ops/blueprint"),
runbook: () => http.get("/ops/runbook"),
resolveRunbookSequence: (sequenceKey: string, payload?: Record<string, unknown>) =>
http.post(`/ops/runbook/sequences/${encodeURIComponent(sequenceKey)}/resolve`, payload || {}),
executeRunbookSequence: (sequenceKey: string, payload?: Record<string, unknown>) =>
http.post(`/ops/runbook/sequences/${encodeURIComponent(sequenceKey)}/execute`, payload || {}),
nodes: () => http.get("/ops/nodes"),
nodeHandover: (nodeCode: string, params?: Record<string, unknown>) =>
http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/handover`, { params }),
nodeOnboarding: (nodeCode: string, params?: Record<string, unknown>) =>
http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding`, { params }),
previewNodeOnboardingRecovery: (nodeCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding/recovery/preview`, payload || {}),
executeNodeOnboardingRecovery: (nodeCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding/recovery/execute`, payload || {}),
nodeSceneLog: (nodeCode: string, params?: Record<string, unknown>) =>
http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/scene-log`, { params }),
buildNodeHandoverBootstrapPlan: (nodeCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/handover/bootstrap-plan`, payload || {}),
deliveryQueue: (nodeCode: string) => http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue`),
deliveryQueueRecords: (nodeCode: string, params?: Record<string, unknown>) =>
http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records`, { params }),
flushDeliveryQueue: (nodeCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/flush`, payload || {}),
replayDeliveryQueue: (nodeCode: string, payload?: Record<string, unknown>) =>
http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/replay`, payload || {}),
replayDeliveryQueueRecord: (nodeCode: string, recordId: string, payload?: Record<string, unknown>) =>
http.post(
`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records/${encodeURIComponent(recordId)}/replay`,
payload || {}
),
discardDeliveryQueueRecord: (nodeCode: string, recordId: string, payload?: Record<string, unknown>) =>
http.post(
`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records/${encodeURIComponent(recordId)}/discard`,
payload || {}
),
upsertNode: (payload: Record<string, unknown>) => http.post("/ops/nodes", payload),
syncNodesFromCluster: (dryRun = false) => http.post(`/ops/nodes/sync-from-cluster?dry_run=${dryRun ? "true" : "false"}`),
previewPolicy: (payload: Record<string, unknown>) => http.post("/ops/policy/preview", payload),
jobs: (params?: Record<string, unknown>) => http.get("/ops/jobs", { params }),
jobDetail: (jobId: number) => http.get(`/ops/jobs/${jobId}`),
jobEvents: (jobId: number, params?: Record<string, unknown>) => http.get(`/ops/jobs/${jobId}/events`, { params }),
previewDriverAction: (payload: Record<string, unknown>) => http.post("/ops/driver-actions/preview", payload),
resolveDriverAction: (payload: Record<string, unknown>) => http.post("/ops/driver-actions/resolve", payload),
executeDriverAction: (payload: Record<string, unknown>) => http.post("/ops/driver-actions/execute", payload),
executeResolvedDriverAction: (payload: Record<string, unknown>) => http.post("/ops/driver-actions/execute-resolved", payload),
resolveCodexAction: (payload: Record<string, unknown>) => http.post("/ops/codex-actions/resolve", payload),
executeCodexAction: (payload: Record<string, unknown>) => http.post("/ops/codex-actions/execute", payload),
createJobBatch: (payload: Record<string, unknown>) => http.post("/ops/jobs/batch", payload),
approveJob: (jobId: number, payload?: Record<string, unknown>) => http.post(`/ops/jobs/${jobId}/approve`, payload || {}),
cancelJob: (jobId: number, payload?: Record<string, unknown>) => http.post(`/ops/jobs/${jobId}/cancel`, payload || {}),
dispatchJob: (jobId: number) => http.post(`/ops/jobs/${jobId}/dispatch`),
issueAgentToken: (payload: Record<string, unknown>) => http.post("/ops/agent/tokens", payload),
buildAgentBootstrapPlan: (payload: Record<string, unknown>) => http.post("/ops/agent/bootstrap-plan", payload),
releases: (params?: Record<string, unknown>) => http.get("/ops/releases", { params }),
latestRelease: (channel = "stable") => http.get("/ops/releases/latest", { params: { channel } }),
latestReleasePackageMetadata: () => http.get("/ops/releases/package-metadata/latest"),
releaseLaunchpad: (channel = "stable") => http.get("/ops/releases/launchpad", { params: { channel } }),
releaseDetail: (releaseId: number) => http.get(`/ops/releases/${releaseId}`),
createRelease: (payload: Record<string, unknown>) => http.post("/ops/releases", payload),
createReleaseFromLatestPackage: (payload?: Record<string, unknown>) => http.post("/ops/releases/from-package/latest", payload || {}),
createReleaseFromLatestPackageAndSmartRollout: (payload?: Record<string, unknown>) =>
http.post("/ops/releases/from-package/latest/smart-rollout", payload || {}),
createSmartRolloutForRelease: (releaseId: number, payload?: Record<string, unknown>) =>
http.post(`/ops/releases/${releaseId}/smart-rollout`, payload || {}),
activateRelease: (releaseId: number) => http.post(`/ops/releases/${releaseId}/activate`),
releaseRollouts: (releaseId: number, params?: Record<string, unknown>) => http.get(`/ops/releases/${releaseId}/rollouts`, { params }),
createRollout: (releaseId: number, payload: Record<string, unknown>) => http.post(`/ops/releases/${releaseId}/rollouts`, payload),
rolloutDetail: (rolloutId: number) => http.get(`/ops/rollouts/${rolloutId}`),
rolloutJobs: (rolloutId: number, params?: Record<string, unknown>) => http.get(`/ops/rollouts/${rolloutId}/jobs`, { params }),
advanceRollout: (rolloutId: number, payload?: Record<string, unknown>) => http.post(`/ops/rollouts/${rolloutId}/advance`, payload || {})
};
export const settingsApi = {
getSettings: () => http.get("/settings"),
updateSettings: (payload: Record<string, unknown>) => http.put("/settings", payload),
getCredentials: () => http.get("/settings/credentials"),
updateCredentials: (payload: Record<string, unknown>) => http.put("/settings/credentials", payload),
exportSettings: () => http.get("/settings/export"),
importSettings: (payload: Record<string, unknown>) => http.post("/settings/import", payload),
validateImportSettings: (payload: Record<string, unknown>) => http.post("/settings/validate-import", payload),
backupSettings: () => http.post("/settings/backup"),
getSettingsBackups: () => http.get("/settings/backups"),
getJuziseoStatus: () => http.get("/settings/juziseo/status"),
loginJuziseo: (payload: { email: string; password: string }) => http.post("/settings/juziseo/login", payload),
backupDownloadUrl: (filename: string) =>
`${(import.meta.env.VITE_API_BASE_URL || "http://127.0.0.1:8100/api/v1").replace(/\/api\/v1\/?$/, "")}/api/v1/settings/backups/download/${encodeURIComponent(filename)}`
};
export const importsApi = {
summary: () => http.get("/imports/summary"),
tasks: () => http.get("/imports/tasks"),
retry: (taskId: string) => http.post(`/imports/tasks/${taskId}/retry`),
createTextTask: (payload: { text: string; filename?: string }) => http.post("/imports/text", payload),
upload: (formData: FormData) =>
http.post("/imports/upload", formData, {
headers: {
"Content-Type": "multipart/form-data"
}
})
};
export const detectApi = {
status: () => http.get("/detect/status"),
activeJob: () => http.get("/detect/job/active"),
queueSummary: (params?: Record<string, unknown>) => http.get("/detect/queue-summary", { params }),
jobs: (params?: Record<string, unknown>) => http.get("/detect/jobs", { params }),
jobDetail: (jobId: number) => http.get(`/detect/jobs/${jobId}`),
start: () => http.post("/detect/start"),
stop: () => http.post("/detect/stop")
};
export const domainsApi = {
filters: () => http.get("/domains/filters"),
list: (params?: Record<string, unknown>) => http.get("/domains", { params }),
detail: (domainId: number) => http.get(`/domains/${domainId}`),
batchUpdate: (payload: Record<string, unknown>) => http.post("/domains/batch-update", payload)
};
export const exportsApi = {
list: () => http.get("/exports"),
run: (payload: Record<string, unknown>) => http.post("/exports/run", payload)
};
export const logsApi = {
latest: () => http.get("/logs/latest"),
bundleUrl: () => `${(import.meta.env.VITE_API_BASE_URL || "http://127.0.0.1:8100/api/v1").replace(/\/api\/v1\/?$/, "")}/api/v1/logs/bundle`
};
export const sensitiveWordsApi = {
get: () => http.get("/sensitive-words"),
save: (payload: { text: string }) => http.put("/sensitive-words", payload)
};
export const jumingApi = {
status: () => http.get("/juming/status"),
preferences: () => http.get("/juming/preferences"),
updatePreferences: (payload: Record<string, unknown>) => http.put("/juming/preferences", payload),
login: (payload: { email: string; password: string }) => http.post("/juming/login", payload),
loginJucha: () => http.post("/juming/jucha-login"),
crawl: (payload: Record<string, unknown>) => http.post("/juming/crawl", payload),
tasks: () => http.get("/juming/tasks"),
retryTask: (taskId: string) => http.post(`/juming/tasks/${taskId}/retry`),
stopTask: (taskId: string) => http.post(`/juming/tasks/${taskId}/stop`),
uploadCookie: (formData: FormData) =>
http.post("/juming/cookie/upload", formData, {
headers: {
"Content-Type": "multipart/form-data"
}
})
};