# Чистка и пометки ответов

## Чистка, пометки, порядок и теги

---

### 64. Корзина, возврат и безвозвратное удаление

*Метод в API с 2026-09-08.*

Требует право участника **`answers_delete`**.

**HTTP:** `POST /quiz/{id}/answers/bulk`

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| `action` | string | Да | `trash` — в корзину, `restore` — вернуть, `purge` — безвозвратно. |
| `scope` | string | Нет | `selected` (по умолчанию) или `all` — все ответы опроса. |
| `answer_ids` | array | Да, если `scope` не `all` | До 500 за вызов. |
| `excluded_answer_ids` | array | Нет | При `scope=all` — что оставить как есть. |
| `confirm_purge` | boolean | Для `purge` — да | Без него `422`. |

`purge` — это пометка, а не стирание строки: ответ исчезает из выдачи, файлы
респондента убирает фоновая уборка. Отменить нельзя, поэтому подтверждение
обязательно.

Скрытые и отправленные на модерацию ответы эти действия не трогают — как и в
кабинете. Помеченное безвозвратно не возвращается и повторно не метится.

```json
{"status": true, "quiz_id": 18547, "action": "trash", "scope": "selected", "affected": 12}
```

Ни один ответ не подошёл под условия — `400` с кодом `nothing_matched`.

---

### 65. Пометка у ответа

*Метод в API с 2026-09-08.*

Требует право **`settings`**. Пометка — короткая заметка вроде «перезвонить» или
«дубль», видна в списке ответов.

**HTTP:** `POST /quiz/{id}/answers/{answerId}/note`

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| `note` | string\|null | Да (может быть `null`) | До 100 символов. `null` снимает пометку. |

Ответ другого опроса — `400` с кодом `answer_not_found`.

---

### 66. Порядок вопросов в карточке ответа

*Метод в API с 2026-09-08.*

Требует право **`view_results`**.

**HTTP:** `POST /quiz/{id}/answers/order-mode`

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| `answers_order_mode` | string | Да | `respondent` — в порядке прохождения, `survey` — в порядке опроса. |

---

### 67. Значения метки ссылки

*Метод в API с 2026-09-08.*

Требует право **`view_results`**. По этим значениям отбирают ответы в отчёте, а
вручную их не угадать.

**HTTP:** `GET /quiz/{id}/answers/extra-fields`

| Параметр | Тип | Обязательное | Описание |
|---|---|---|---|
| `key` | string | Да | Имя метки, например `utm_source`. |
| `search` | string | Нет | Отбор по части значения. |
| `page` | integer | Нет | Страница. |
| `per_page` | integer | Нет | 1–100. |

Значения приходят полем `values`, рядом — `key`, `page`, `per_page` и `has_more`
(набралась ли страница целиком). Общего числа значений метод не считает.

---

### 68. Справочник тегов ответов

*Метод в API с 2026-09-08.*

Теги живут в аккаунте, а не в опросе: один тег ставится ответам разных опросов.

| Действие | HTTP |
|---|---|
| Список | `GET /workspace/{workspace_id}/answer-tags` |
| Создать | `POST /workspace/{workspace_id}/answer-tags` с полем `name` (до 255 символов) |
| Удалить | `DELETE /workspace/{workspace_id}/answer-tags/{tagId}` |

Удаление тега, которого в аккаунте нет — `400` с кодом `tag_not_found`.

---