← Back to reference

Remediation Api Reference

Endpoints

Run Remediation

POST /v1/<tenant_id>/remediation/run
Content-Type: application/json

{
  "host": "node-3",
  "rule_id": "DCGM_FI_DEV_XID_ERRORS=79",
  "severity": "critical",
  "warm_spare": "warm-spare-0",
  "step_timeout_ms": 30000,
  "tenant": "acme"  // optional override
}

Response:

{
  "incident_id": "uuid",
  "remediation_id": "uuid",
  "final_state": "COMPLETED",
  "rma_ticket": "RMA-...",
  "warm_spare": "warm-spare-0",
  "events": [
    { "action": "DetectXid", "success": true, "duration_ms": 1 },
    { "action": "CordonNode", "success": true, "duration_ms": 12 },
    { "action": "DrainSlurmNode", "success": true, "duration_ms": 17 },
    { "action": "TriggerCheckpoint", "success": true, "duration_ms": 8 },
    { "action": "EvictPod", "success": true, "duration_ms": 22 },
    { "action": "RerouteJob", "success": true, "duration_ms": 31 },
    { "action": "RunDcgmDiagnostics", "success": true, "duration_ms": 9800 },
    { "action": "ResumeFromCheckpoint", "success": true, "duration_ms": 19 },
    { "action": "GenerateRmaTicket", "success": true, "duration_ms": 4 }
  ]
}

Status

GET /v1/<tenant_id>/remediation/<id>

Rollback

POST /v1/<tenant_id>/remediation/<id>/rollback

Approve

POST /v1/<tenant_id>/remediation/<id>/approve
{
  "decision": "AutoRemediate",
  "actor": "alice@example.com"
}

Action Classes

ClassDefault Tier
DrainApprove
EvictApprove
RerouteApprove
RunDiagnosticAutoSafe
OpenRmaTicketAutoSafe
RebootNodeApprove
ResetGpuApprove

Override via policy.yaml.

Audit

Every action emits an AuditRecord (see docs/audit-logging-guide.md). Hash chain verifier: denpex-control-plane audit-verify.

Air-Gap Behavior

In air-gapped mode, webhook side-effects are dropped unless explicitly allow-listed.

See Also

  • docs/remediation-architecture.md.
  • docs/incident-schema-reference.md.