Skip to main content
POST
Resolve Incident
string
required
Name of the Issue resource (e.g., payment-service-oom-kill-1773933600)
string
Namespace of the incident. When omitted, every namespace is searched and the first incident with that name is resolved — pass it explicitly when names can repeat across namespaces.
string
Description of how the incident was resolved. If omitted (or the body is empty), defaults to "Manually resolved via dashboard".Best practice: always provide a meaningful resolution message for the audit trail.

When to Use This Endpoint

1. Escalated Incidents (Human Action Required)

When automatic remediation is exhausted — maxRemediationAttempts attempts (Instance spec.aiops.maxRemediationAttempts, default 5, or the matching Runbook’s maxAttempts) — the incident moves to Escalated. From there:
  • Configured notification and escalation policies alert the on-call team
  • No further automatic remediation is attempted
  • If auto-resolve is enabled (Instance spec.aiops.enableAutoResolve, default true), the operator re-checks the resource every 30 seconds and resolves the incident itself once all replicas are healthy
  • Otherwise the incident stays Escalated until someone resolves it through this endpoint or the web dashboard

2. Manual Verification After Auto-Remediation

Even when automatic remediation succeeds, operators may want to close the incident with their own resolution text.

3. False Positives

When an incident turns out to be a false positive, resolve it with a resolution such as "False positive — metric spike caused by scheduled batch job".

Resolution Flow for Escalated Incidents

What Happens on Resolution

  1. State change: any state except Resolved (including Escalated, Failed and in-progress states) becomes Resolved; status.resolution and status.resolvedAt are set. Resolving an already resolved incident returns 409.
  2. Annotations added:
    • aiops.chatcli.io/resolved-by — the role of the calling API key (operator or admin)
    • aiops.chatcli.io/resolved-at — resolution timestamp
    • aiops.chatcli.io/manual-resolution — "true"
  3. Resolved is terminal: the Issue controller stops processing the incident.
A manual resolve does not: generate a PostMortem (PostMortems are created only when a RemediationPlan finishes), record an AuditEvent, stop a RemediationPlan that is already running, or clear the watcher’s deduplication entry for the resource (the hook exists but is not wired in the operator), so a recurring anomaly on the same resource can stay deduplicated until the entry expires (Instance spec.aiops.dedupTTLMinutes, default 30).

Authorizations

X-API-Key
string
header
required

API key sent in the X-API-Key header. Keys are read from the Secret chatcli-operator-secrets, key api-keys (fallback: ConfigMap chatcli-operator-config, key api-keys) in the operator namespace, as a YAML list of {key, role, name, description} (name is the identity recorded on approval decisions); the operator chart creates it only with apiKeys.create: true. Roles: viewer < operator < admin — any other role string is denied everywhere. Changes are picked up within about 30 seconds; deleting both the Secret and the ConfigMap revokes every key. With no keys configured every /api/ call returns 401, unless CHATCLI_OPERATOR_DEV_MODE=true, which grants admin without a key (development only).

Path Parameters

name
string
required

Issue name.

Example:

"payment-service-oom-1710860400"

Query Parameters

namespace
string

Namespace of the object. When omitted, all namespaces are searched and the first object with this name is used.

Body

application/json
resolution
string

How the incident was resolved. Defaults to Manually resolved via dashboard when omitted.

Response

Incident resolved

apiVersion
string
Example:

"v1"

kind
string
Example:

"Incident"

spec
object
status
object
resourceMeta
object