---
title: "Update a rule"
method: PUT
path: "/rules/{id}"
tags: ["Rules"]
---

# Update a rule

`PUT /rules/{id}`

## Request

- Base URL: `https://orbitus.netcorecloud.com`
- URL: `https://orbitus.netcorecloud.com/rules/{id}`
- Auth: HTTP bearer

Update a rule. If `rule_routes` is provided, existing route mappings are **replaced entirely**.

## Headers

- `X-Client-ID` integer

## Request body

- RuleCreate
  - `rule_name` string, required
  - `expression` string, required: Must compile with `expr.Compile()`.
  - `tag` string
  - `priority` integer, required: Lower number = higher priority.
  - `enabled` boolean, required
  - `rule_routes` object[]
    - `route_id` integer, required: Must exist for the current client.
    - `weight` integer, required
    - `enabled` boolean

## Response `200`

Rule updated.

- Rule
  - `id` integer
  - `client_id` integer
  - `rule_name` string
  - `tag` string
  - `priority` integer: Lower number = higher priority.
  - `expression` string: Expression evaluated by `expr.Compile()`. Available variables: `from_address`, `from_domain`, `from_local`, `to_address`, `to_domain`, `to_local`, `headers`, `remote_ip`, `helo`, `size`. Helper functions: `StartsWith()`, `EndsWith()`, `Contains()`, `Matches()`, `ToLower()`, `ToUpper()`, `Trim()`.
  - `enabled` boolean
  - `rule_routes` RuleRouteAssignment[]
    - `id` integer
    - `provider_name` string
    - `route_id` integer
    - `route_name` string
    - `weight` integer: Distribution weight.
    - `enabled` boolean
  - `created_at` string, date-time

## Other responses

- `404`: Rule not found.

---

[API](https://skmtc.dev/netcorecloud/apis/orbit-router.md) - [All operations](https://skmtc.dev/netcorecloud/apis/orbit-router/llms.txt) - [OpenAPI document](https://skmtc.dev/netcorecloud/apis/orbit-router/revisions/680f0a8ab1a3?raw)
