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) => http.get("/runtime/debug-overview", { params }), debugDiagnosis: (params?: Record) => http.get("/runtime/debug-diagnosis", { params }), debugHandoff: (params?: Record) => http.get("/runtime/debug-handoff", { params }), debugEvents: (params?: Record) => 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) => http.get("/ops/go-live-summary", { params }), doctorDecision: (params?: Record) => http.get("/ops/doctor-decision", { params }), goLiveSignoff: (params?: Record) => http.get("/ops/go-live-signoff", { params }), goLiveBundle: (params?: Record) => http.get("/ops/go-live-bundle", { params }), goLiveReview: (params?: Record) => http.get("/ops/go-live-review", { params }), stackDiagnosis: (params?: Record) => http.get("/ops/stack-diagnosis", { params }), linkSnapshot: () => http.get("/ops/link-snapshot"), inspectionOverview: (params?: Record) => http.get("/ops/inspection-overview", { params }), activityStream: (params?: Record) => 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) => http.get("/ops/playbook-runs", { params }), playbookRunDetail: (runCode: string) => http.get(`/ops/playbook-runs/${encodeURIComponent(runCode)}`), playbookRunEvents: (runCode: string, params?: Record) => http.get(`/ops/playbook-runs/${encodeURIComponent(runCode)}/events`, { params }), rerunPlaybookRun: (runCode: string, payload?: Record) => http.post(`/ops/playbook-runs/${encodeURIComponent(runCode)}/rerun`, payload || {}), cancelPlaybookRun: (runCode: string, payload?: Record) => http.post(`/ops/playbook-runs/${encodeURIComponent(runCode)}/cancel`, payload || {}), previewPlaybook: (payload: Record) => http.post("/ops/playbooks/preview", payload), executePlaybook: (payload: Record) => http.post("/ops/playbooks/execute", payload), blueprint: () => http.get("/ops/blueprint"), runbook: () => http.get("/ops/runbook"), resolveRunbookSequence: (sequenceKey: string, payload?: Record) => http.post(`/ops/runbook/sequences/${encodeURIComponent(sequenceKey)}/resolve`, payload || {}), executeRunbookSequence: (sequenceKey: string, payload?: Record) => http.post(`/ops/runbook/sequences/${encodeURIComponent(sequenceKey)}/execute`, payload || {}), nodes: () => http.get("/ops/nodes"), nodeHandover: (nodeCode: string, params?: Record) => http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/handover`, { params }), nodeOnboarding: (nodeCode: string, params?: Record) => http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding`, { params }), previewNodeOnboardingRecovery: (nodeCode: string, payload?: Record) => http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding/recovery/preview`, payload || {}), executeNodeOnboardingRecovery: (nodeCode: string, payload?: Record) => http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/onboarding/recovery/execute`, payload || {}), nodeSceneLog: (nodeCode: string, params?: Record) => http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/scene-log`, { params }), buildNodeHandoverBootstrapPlan: (nodeCode: string, payload?: Record) => 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) => http.get(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records`, { params }), flushDeliveryQueue: (nodeCode: string, payload?: Record) => http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/flush`, payload || {}), replayDeliveryQueue: (nodeCode: string, payload?: Record) => http.post(`/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/replay`, payload || {}), replayDeliveryQueueRecord: (nodeCode: string, recordId: string, payload?: Record) => http.post( `/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records/${encodeURIComponent(recordId)}/replay`, payload || {} ), discardDeliveryQueueRecord: (nodeCode: string, recordId: string, payload?: Record) => http.post( `/ops/nodes/${encodeURIComponent(nodeCode)}/delivery-queue/records/${encodeURIComponent(recordId)}/discard`, payload || {} ), upsertNode: (payload: Record) => http.post("/ops/nodes", payload), syncNodesFromCluster: (dryRun = false) => http.post(`/ops/nodes/sync-from-cluster?dry_run=${dryRun ? "true" : "false"}`), previewPolicy: (payload: Record) => http.post("/ops/policy/preview", payload), jobs: (params?: Record) => http.get("/ops/jobs", { params }), jobDetail: (jobId: number) => http.get(`/ops/jobs/${jobId}`), jobEvents: (jobId: number, params?: Record) => http.get(`/ops/jobs/${jobId}/events`, { params }), previewDriverAction: (payload: Record) => http.post("/ops/driver-actions/preview", payload), resolveDriverAction: (payload: Record) => http.post("/ops/driver-actions/resolve", payload), executeDriverAction: (payload: Record) => http.post("/ops/driver-actions/execute", payload), executeResolvedDriverAction: (payload: Record) => http.post("/ops/driver-actions/execute-resolved", payload), resolveCodexAction: (payload: Record) => http.post("/ops/codex-actions/resolve", payload), executeCodexAction: (payload: Record) => http.post("/ops/codex-actions/execute", payload), createJobBatch: (payload: Record) => http.post("/ops/jobs/batch", payload), approveJob: (jobId: number, payload?: Record) => http.post(`/ops/jobs/${jobId}/approve`, payload || {}), cancelJob: (jobId: number, payload?: Record) => http.post(`/ops/jobs/${jobId}/cancel`, payload || {}), dispatchJob: (jobId: number) => http.post(`/ops/jobs/${jobId}/dispatch`), issueAgentToken: (payload: Record) => http.post("/ops/agent/tokens", payload), buildAgentBootstrapPlan: (payload: Record) => http.post("/ops/agent/bootstrap-plan", payload), releases: (params?: Record) => 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) => http.post("/ops/releases", payload), createReleaseFromLatestPackage: (payload?: Record) => http.post("/ops/releases/from-package/latest", payload || {}), createReleaseFromLatestPackageAndSmartRollout: (payload?: Record) => http.post("/ops/releases/from-package/latest/smart-rollout", payload || {}), createSmartRolloutForRelease: (releaseId: number, payload?: Record) => http.post(`/ops/releases/${releaseId}/smart-rollout`, payload || {}), activateRelease: (releaseId: number) => http.post(`/ops/releases/${releaseId}/activate`), releaseRollouts: (releaseId: number, params?: Record) => http.get(`/ops/releases/${releaseId}/rollouts`, { params }), createRollout: (releaseId: number, payload: Record) => http.post(`/ops/releases/${releaseId}/rollouts`, payload), rolloutDetail: (rolloutId: number) => http.get(`/ops/rollouts/${rolloutId}`), rolloutJobs: (rolloutId: number, params?: Record) => http.get(`/ops/rollouts/${rolloutId}/jobs`, { params }), advanceRollout: (rolloutId: number, payload?: Record) => http.post(`/ops/rollouts/${rolloutId}/advance`, payload || {}) }; export const settingsApi = { getSettings: () => http.get("/settings"), updateSettings: (payload: Record) => http.put("/settings", payload), getCredentials: () => http.get("/settings/credentials"), updateCredentials: (payload: Record) => http.put("/settings/credentials", payload), exportSettings: () => http.get("/settings/export"), importSettings: (payload: Record) => http.post("/settings/import", payload), validateImportSettings: (payload: Record) => 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) => http.get("/detect/queue-summary", { params }), jobs: (params?: Record) => 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) => http.get("/domains", { params }), detail: (domainId: number) => http.get(`/domains/${domainId}`), batchUpdate: (payload: Record) => http.post("/domains/batch-update", payload) }; export const exportsApi = { list: () => http.get("/exports"), run: (payload: Record) => 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) => 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) => 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" } }) };