Inbox rules

Update an inbox rule

Changed on

Replaces the definition of one of your organization's inbox rules. Send the whole definition: fields you leave out are removed.

The id in the body must match the one in the path. Editing a rule never changes notifications that were already sent.

put/communications/inbox_rule/{id}

Request

  • Base URL
    https://api.nullplatform.com
  • URL
    https://api.nullplatform.com/communications/inbox_rule/{id}
  • Auth
    HTTP bearer

Path parameters

idstring required

The ID of the inbox rule, like acme.security_finding or deployment.failed.

Query parameters

dry_run'true' | 'false'

Set to true to run every check, limits included, without saving anything.

Request body

idstring required

Lowercase words with exactly one dot. It also identifies the rule in inbox settings, and it can't change later.

ℹ️ Note: It can't start with platform.. Using a built-in rule's ID edits that rule for your organization.

status'active' | 'deprecated'

Whether the rule is active. Defaults to active. deprecated means deactivated.

context_schemaobject

A JSON Schema for the data each send carries. An invoked rule must require id, because sends are idempotent by it.

severity'informational' | 'maintenance' | 'degraded' | 'outage' required

Sets the icon and the color of the notification.

visible_tostring[]

The one NRN the rule applies under. Defaults to your organization. Sends for resources outside it are refused.

Example request

{
  "id": "acme.security_finding",
  "status": "active",
  "context_schema": {
    "type": "object",
    "required": [
      "id",
      "service",
      "owner_id"
    ],
    "properties": {
      "id": {
        "type": "string"
      },
      "service": {
        "type": "string"
      },
      "summary": {
        "type": "string"
      },
      "owner_id": {
        "type": "integer"
      }
    }
  },
  "category": {
    "group": "security",
    "label": "Security findings",
    "description": "Vulnerabilities your CI scanners report.",
    "configurable": true,
    "allows_all": true,
    "default_mode": "involved"
  },
  "severity": "degraded",
  "audience": [
    {
      "as": "owner",
      "who": {
        "user": "${{ context.owner_id }}"
      },
      "action": "acme.security_finding",
      "content": {
        "title": "Security finding on ${{ context.service }}",
        "body": "${{ context.summary }}"
      }
    }
  ],
  "visible_to": [
    "organization=1:account=2"
  ]
}

Response

The updated inbox rule. With dry_run=true, { "valid": true } and nothing is saved.

OR

Example response

{
  "id": "acme.security_finding",
  "organization_id": 1,
  "publisher": "organization",
  "status": "active",
  "document": {
    "id": "acme.security_finding",
    "status": "active",
    "context_schema": {
      "type": "object",
      "required": [
        "id",
        "service",
        "owner_id"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "owner_id": {
          "type": "integer"
        }
      }
    },
    "category": {
      "group": "security",
      "label": "Security findings",
      "description": "Vulnerabilities your CI scanners report.",
      "configurable": true,
      "allows_all": true,
      "default_mode": "involved"
    },
    "severity": "degraded",
    "audience": [
      {
        "as": "owner",
        "who": {
          "user": "${{ context.owner_id }}"
        },
        "action": "acme.security_finding",
        "content": {
          "title": "Security finding on ${{ context.service }}",
          "body": "${{ context.summary }}"
        }
      }
    ],
    "visible_to": [
      "organization=1:account=2"
    ]
  },
  "created_at": "2026-10-20T14:03:11.000Z",
  "updated_at": "2026-10-20T14:03:11.000Z",
  "organization_state": {
    "enabled": true,
    "linked": []
  }
}

Changes