---
title: "Массово изменить сделки"
method: POST
path: "/api/v1/crm/deals/bulk"
tags: ["CRM deals"]
---

# Массово изменить сделки

`POST /api/v1/crm/deals/bulk`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/crm/deals/bulk`
- 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`)

Одно действие над выбранными сделками списка: assign — сменить ответственного (owner_id), move — перенести на этап (stage_id; в другую воронку — с pipeline_id, на этап проигрыша — с loss_reason_id), archive — убрать в архив, restore — вернуть из архива, delete — удалить безвозвратно (как DELETE /crm/deals/{id}; нужно право удаления сделок, иначе 403 crm.deal_delete_forbidden всему запросу). Каждая сделка меняется отдельно и проходит те же проверки, что правка по одной: доступ к записи, обязательные поля этапа, причину проигрыша, ИНН клиента перед выигрышем. Сделка, к которой действие не применилось, не мешает остальным и попадает в skipped с кодом и причиной. Весь запрос отклоняется 400 только при ошибке самого запроса: crm.bulk_invalid, crm.bulk_size, crm.bulk_action, crm.bulk_owner_required, crm.bulk_stage_required.

## Headers

- `X-Tenant` string, required

## Request body

- CRMBulkDealsInput: Одно действие над выбранными сделками
  - `ids` UUID[], required: Выбранные сделки: от 1 до 200, повторы отбрасываются
  - `action` 'assign' | 'move' | 'archive' | 'restore' | 'delete', required: Действие: assign — сменить ответственного, move — перенести на этап, archive — убрать в архив, restore — вернуть из архива, delete — удалить безвозвратно
  - `owner_id` integer: Новый ответственный; обязателен для assign
  - `stage_id` string, uuid
  - `pipeline_id` string, uuid
  - `loss_reason_id` string, uuid

## Response `200`

Изменённые сделки и пропущенные с причиной

- CRMBulkResult: Итог массового действия: подходящие записи изменены, неподходящие пропущены с причиной
  - `updated` UUID[], required: Изменённые записи
  - `skipped` CRMBulkSkip[], required: Пропущенные записи с причиной
    - `id` string, uuid, required
    - `code` string: Тот же код отказа, что вернула бы правка этой записи по одной, например crm.record_forbidden или crm.stage_fields_required
    - `detail` string, required: Причина на языке запроса

## Other responses

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

---

[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/a99574d597cc?raw)
