---
id: inbox-rule-customization-delete
title: Reset a built-in inbox rule to default
description: >-
  Discards your organization's edits to a built-in inbox rule, so it runs again
  as nullplatform ships it. It's the same as **Reset to default** in the UI.
sidebar_label: Reset a built-in inbox rule to default
hide_title: true
hide_table_of_contents: true
api: >-
  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
sidebar_class_name: delete api-method
info_path: docs/api/communications
custom_edit_url: null
canonical: 'https://docs.nullplatform.com/docs/api/inbox-rule-customization-delete'
---
<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Reset a built-in inbox rule to default"}
>
</Heading>

<MethodEndpoint
  method={"delete"}
  path={"/communications/inbox_rule/{id}/customization"}
  context={"endpoint"}
>

</MethodEndpoint>

Discards your organization's edits to a built-in inbox rule, so it runs again as nullplatform ships it. It's the same as **Reset to default** in the UI.

Answers `404` if your organization didn't edit the rule.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"in":"path","name":"id","required":true,"schema":{"type":"string","minLength":1,"maxLength":120},"description":"The ID of a built-in inbox rule, like `deployment.failed`.","example":"deployment.failed"}]}
>

</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={undefined}
>

</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The built-in rule, with its state in your organization.","content":{"application/json":{"schema":{"title":"InboxRule","type":"object","properties":{"id":{"type":"string","description":"The ID of the inbox rule.","example":"acme.security_finding"},"organization_id":{"type":"integer","nullable":true,"description":"Your organization's ID for its own rules, or `null` for a built-in rule.","example":1},"publisher":{"type":"string","description":"Who published the rule: `organization` for your organization's rules.","example":"organization"},"status":{"type":"string","enum":["active","deprecated"],"description":"Whether the rule is active. `deprecated` means deactivated.","example":"active"},"document":{"title":"InboxRuleDefinition","type":"object","description":"The definition of an inbox rule. The main fields are listed here. For every field, including conditions, delays, and batching, read the schema from `GET /communications/inbox_rule/schema`.\n","required":["id","source","category","severity","audience"],"additionalProperties":true,"properties":{"id":{"type":"string","pattern":"^[a-z_]+\\.[a-z_]+$","description":"Lowercase words with exactly one dot. It also identifies the rule in inbox settings, and it can't change later.\n\n> ℹ️ **Note:** It can't start with `platform.`. Using a built-in rule's ID edits that rule for your organization.\n","example":"acme.security_finding"},"status":{"type":"string","enum":["active","deprecated"],"description":"Whether the rule is active. Defaults to `active`. `deprecated` means deactivated.","example":"active"},"source":{"description":"What makes the rule fire:\n\n- `{ \"kind\": \"invoked\" }`: your code calls the emission endpoint.\n- A source name, like `\"deployment\"`: the entity changes status in nullplatform. See `GET /communications/inbox_rule/source`.\n- `{ \"kind\": \"stale\", ... }`: an entity stays in a status for too long.\n","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true}],"example":{"kind":"invoked"}},"context_schema":{"type":"object","additionalProperties":true,"description":"A JSON Schema for the data each send carries. An invoked rule must require `id`, because sends are idempotent by it.","example":{"type":"object","required":["id","service","owner_id"],"properties":{"id":{"type":"string"},"service":{"type":"string"},"summary":{"type":"string"},"owner_id":{"type":"integer"}}}},"category":{"type":"object","description":"How the rule shows up in inbox settings. All six fields are required.","required":["group","label","description","configurable","allows_all","default_mode"],"properties":{"group":{"type":"string","description":"The group the rule is listed under in inbox settings.","example":"security"},"label":{"type":"string","description":"The rule's name in inbox settings.","example":"Security findings"},"description":{"type":"string","maxLength":70,"description":"One line on what the rule announces.","example":"Vulnerabilities your CI scanners report."},"configurable":{"type":"boolean","description":"Whether people can change their mode for this rule.","example":true},"allows_all":{"type":"boolean","description":"Whether people can choose **Everything** for this rule under a resource. Requires `configurable`.","example":true},"default_mode":{"type":"string","enum":["off","involved","all"],"description":"What people get until they change it.","example":"involved"}}},"severity":{"type":"string","enum":["informational","maintenance","degraded","outage"],"description":"Sets the icon and the color of the notification.","example":"degraded"},"audience":{"type":"array","description":"One entry per reading. Each entry is a separate notification with its own wording.","items":{"type":"object","required":["as","action","content"],"additionalProperties":true,"properties":{"as":{"type":"string","description":"The name of this reading.","example":"owner"},"who":{"type":"object","additionalProperties":true,"description":"Who receives this reading: `{ \"user\": \"${{ context.owner_id }}\" }` for a user from the context, or `{ \"can\": \"approval_request:approve\" }` for everyone who holds that action on the resource. Without `who`, only the people who chose **Everything** receive it.","example":{"user":"${{ context.owner_id }}"}},"action":{"type":"string","description":"The rule's ID, or an ID that starts with it.","example":"acme.security_finding"},"content":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"The notification's title. Accepts templates like `${{ context.service }}` and inline Markdown.","example":"Security finding on ${{ context.service }}"},"body":{"type":"string","description":"The notification's body. Accepts templates, inline Markdown, links, and lists.","example":"${{ context.summary }}"}}},"fallback":{"type":"object","additionalProperties":true,"description":"Another reading, with the same fields, for when `who` resolves nobody."}}}},"visible_to":{"type":"array","maxItems":1,"items":{"type":"string"},"description":"The one NRN the rule applies under. Defaults to your organization. Sends for resources outside it are refused.","example":["organization=1:account=2"]}}},"created_at":{"type":"string","format":"date-time","description":"When the rule was created.","example":"2026-10-20T14:03:11.000Z"},"updated_at":{"type":"string","format":"date-time","description":"When the rule was last updated.","example":"2026-10-20T14:03:11.000Z"},"organization_state":{"title":"OrganizationState","type":"object","description":"Only on built-in rules: how the rule stands in your organization.","properties":{"enabled":{"type":"boolean","description":"Whether the rule is on for your organization.","example":true},"customized":{"type":"boolean","description":"Whether your organization edited the rule.","example":false},"linked":{"type":"array","items":{"type":"string"},"description":"Built-in rules that turn on and off together with this one.","example":[]},"replaced_by":{"type":"string","nullable":true,"description":"The ID of your rule that takes this one's place, if any.","example":null}}}}}}}},"4XX":{"description":"The request couldn't be processed. For example, a parameter is invalid, the resource doesn't exist, or you don't have permission. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"urn:nullplatform:error:routes-helper:invalid-params"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"There are invalid parameters on the request"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":400},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations.","example":"ROUTES_HELPER.INVALID_PARAMS"},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"errors":{"type":"array","description":"One entry per invalid field or parameter. Only present on validation errors.","items":{"type":"object","properties":{"field":{"type":"string","description":"The name of the invalid field or parameter.","example":"application_id"},"in":{"type":"string","description":"Where the field was sent: `body`, `query`, or `params` (path parameters).","example":"query"},"issue":{"type":"string","description":"What's wrong with the field, such as `required` or `invalid`.","example":"invalid"},"value":{"description":"The value that was sent, when relevant.","example":"not-a-number"},"message":{"type":"string","description":"A human-readable explanation of the issue."}}}},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"There are invalid parameters on the request"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}},"5XX":{"description":"Something went wrong on nullplatform's side. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"about:blank"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"Oops.. there was an internal error"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":500},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations."},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"Oops.. there was an internal error"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}}}}
>

</StatusCodes>

