/alerts/assignment - Take charge of an alert (assign to me)

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://api.my.nethesis.it/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "my.nethesis.it MCP server": {
    "url": "https://api.my.nethesis.it/mcp"
  }
}

Close
POST /alerts/assignment

Self-assigns the active alert identified by fingerprint to the authenticated caller ("I'm working on this"). Orthogonal to silences: an assigned alert keeps notifying unless it is also muted.

Semantics:

  • Self-assign only: the assignee is always the caller; there is no "assign to user X".
  • Takeover without conflict: if the alert is already assigned to someone else, the assignment is replaced and the assigned timeline event carries reassigned_from with the previous assignee's name. Any confirmation step is frontend-only.
  • No manual unassign: the assignment is auto-released when collect receives the resolved webhook for the fingerprint (a system-driven unassigned event is appended to the timeline). This is also why the alert must still be firing in Mimir: assigning a resolved alert would create a row nothing ever cleans up (404 otherwise).

organization_id must be the alert's organization_id label (the customer org). The alert is looked up in the Mimir tenant that owns the org's alerting and its label must match: a caller authorized for org A cannot act on org B's alert sharing the same reseller tenant.

Requires manage:systems permission on an organization in the caller's hierarchy. Customers are pinned to their own organization.

Query parameters

  • organization_id string

    The alert's organization (its organization_id label). Required for Owner/Distributor/Reseller; ignored for Customer (pinned).

application/json

Body Required

  • fingerprint string Required

    Alertmanager fingerprint of the active alert

    Format should match the following pattern: ^[A-Za-z0-9._:-]{1,128}$.

  • note string

    Optional note taken together with the assignment. Embedded in the assigned timeline event (details.note) so the action renders as a single block; standalone notes posted via POST /alerts/notes stay separate note_added events. Blank values are ignored.

    Maximum length is 2000.

Responses

  • 200 application/json

    Alert assigned to the caller

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object
      Hide data attribute Show data attribute object
      • assignment object

        Current assignee of an active alert ("who is working on this"). One assignment per (organization_id, fingerprint) at a time; replaced on takeover, deleted automatically when the alert resolves. The assigned_user_org_* fields describe the assignee's own organization (from the JWT), which with cross-hierarchy takeover may differ from the alert's organization_id.

        Hide assignment attributes Show assignment attributes object
        • organization_id string

          The alert's organization (its organization_id label)

        • fingerprint string
        • assigned_user_id string

          logto_id of the assignee (always the authenticated caller)

        • assigned_user_name string

          Display name of the assignee (denormalized)

        • assigned_user_org_id string

          logto_id of the assignee's own organization

        • assigned_user_org_name string

          Name of the assignee's own organization (denormalized)

        • assigned_at string(date-time)
  • 400 application/json

    Bad request - validation error

    Hide response attributes Show response attributes object
    • code integer

      HTTP error code

    • message string

      Error message

    • data object
      Hide data attributes Show data attributes object
      • type string

        Type of error

        Values are validation_error or external_api_error.

      • errors array[object]
        Hide errors attributes Show errors attributes object
        • key string

          Field name that failed validation

        • message string

          Error code or message

        • value string

          Value that failed validation

      • details

        Additional error details

  • 401 application/json

    Unauthorized - invalid or missing token

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
  • 403 application/json

    Forbidden - insufficient permissions

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
  • 404

    Alert not active in the organization's tenant (or fingerprint/org label mismatch)

POST /alerts/assignment
curl \
 --request POST 'https://api.your-domain.com/api/alerts/assignment' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '"{\n  \"fingerprint\": \"79b1c79b3211797c\",\n  \"note\": \"Me ne occupo io: verifico la connettività del firewall\"\n}"'
Request example
{
  "fingerprint": "79b1c79b3211797c",
  "note": "Me ne occupo io: verifico la connettività del firewall"
}
Response examples (200)
{
  "code": 200,
  "message": "alert assigned successfully",
  "data": {
    "assignment": {
      "organization_id": "qpku6m1y2ne8",
      "fingerprint": "bd50123c468631b0",
      "assigned_user_id": "vuoarc4wub5o",
      "assigned_user_name": "DistAdmin",
      "assigned_user_org_id": "ig2m8ux02v57",
      "assigned_user_org_name": "e2e2-dist",
      "assigned_at": "2026-07-14T16:19:12.125306Z"
    }
  }
}
Response examples (400)
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "username",
        "message": "required",
        "value": "string"
      }
    ]
  }
}
Response examples (401)
{
  "code": 401,
  "message": "invalid token",
  "data": {}
}
Response examples (403)
{
  "code": 403,
  "message": "insufficient permissions",
  "data": {}
}