---
title: "Изменить правило разбора почты"
method: PATCH
path: "/api/v1/mail/rules/{id}"
tags: ["Mail rules"]
---

# Изменить правило разбора почты

`PATCH /api/v1/mail/rules/{id}`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/mail/rules/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

Правило передаётся целиком: условия и действия заменяются, а не дописываются.

## Request body

- MailRuleInput: Создание и изменение правила; условия и действия передаются целиком
  - `name` string, required
  - `enabled` boolean, nullable
  - `sort_order` integer, nullable
  - `match` 'all' | 'any': Без значения — all
  - `conditions` MailRuleCondition[], required
    - `field` 'from' | 'to' | 'cc' | 'subject' | 'body' | 'list_id' | 'has_attachment' | 'spam_verdict', required
    - `op` 'contains' | 'equals' | 'starts_with' | 'ends_with' | 'domain_is' | 'is_true' | 'is_false', required: Сравнение по домену доступно только адресным полям; поле has_attachment проверяется как is_true или is_false.
    - `value` string: Обязательно для всех полей, кроме has_attachment
  - `actions` MailRuleAction[], required
    - `type` 'move_to_folder' | 'mark_read' | 'mark_unread' | 'flag' | 'mark_spam' | 'mark_not_spam', required
    - `folder_id` string, uuid
  - `stop_processing` boolean, nullable

## Response `200`

Обновлённое правило

- MailRule: Правило разбора входящей почты
  - `id` string, uuid, required
  - `account_id` string, uuid, required
  - `name` string, required
  - `enabled` boolean, required
  - `sort_order` integer, required: Порядок применения правил ящика
  - `match` 'all' | 'any', required: Правило применяется при всех условиях или при любом из них
  - `conditions` MailRuleCondition[], required
    - `field` 'from' | 'to' | 'cc' | 'subject' | 'body' | 'list_id' | 'has_attachment' | 'spam_verdict', required
    - `op` 'contains' | 'equals' | 'starts_with' | 'ends_with' | 'domain_is' | 'is_true' | 'is_false', required: Сравнение по домену доступно только адресным полям; поле has_attachment проверяется как is_true или is_false.
    - `value` string: Обязательно для всех полей, кроме has_attachment
  - `actions` MailRuleAction[], required
    - `type` 'move_to_folder' | 'mark_read' | 'mark_unread' | 'flag' | 'mark_spam' | 'mark_not_spam', required
    - `folder_id` string, uuid
  - `stop_processing` boolean, required: Прекратить разбор письма после этого правила
  - `applied_count` integer, required: Сколько писем правило разобрало: единственный способ увидеть, что правило молчит из-за опечатки
  - `last_applied_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
