Для AI-агентов: markdown этой страницы — /docs-content/feedback/update.md индекс документации — /llms.txt

Обновить обращение

PATCH /v1/feedback/:id

Меняет статус и резолюцию обращения. Полное обновление доступно ключу со скоупом vibe:feedback. Автор обычным ключом может только отозвать своё обращение — телом { "status": "WITHDRAWN" }.

Параметры

Параметр Тип Обяз. Описание
id (path) string да UUID обращения

Поля запроса (body)

Поле Тип Обяз. Описание
status string нет Новый статус: NEW, REVIEWING, AWAITING_USER, NEEDS_REVIEW, RESOLVED, ARCHIVED, WITHDRAWN
resolution string · null нет Текст резолюции. Желателен при переводе в RESOLVED. Явный null очищает поле

Статусы

Статус Значение
NEW Обращение только создано
REVIEWING Обращение взято в разбор
AWAITING_USER Нужен ответ или уточнение от автора
NEEDS_REVIEW Требует повторного разбора
RESOLVED Обращение закрыто с резолюцией. Автору уходит письмо
ARCHIVED Обращение закрыто без резолюции — дубликат или вне области
WITHDRAWN Обращение отозвано автором

Примеры

curl — личный ключ

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666 \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "RESOLVED",
    "resolution": "Исправлено в релизе 2026-04-19. Пустой filter теперь возвращает 200 с пустым массивом."
  }'

curl — OAuth-приложение

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666 \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "RESOLVED",
    "resolution": "Исправлено в релизе 2026-04-19. Пустой filter теперь возвращает 200 с пустым массивом."
  }'

JavaScript — личный ключ

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666',
  {
    method: 'PATCH',
    headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
    body: JSON.stringify({
      status: 'RESOLVED',
      resolution: 'Исправлено в релизе 2026-04-19. Пустой filter теперь возвращает 200 с пустым массивом.',
    }),
  },
)
const { data } = await res.json()

JavaScript — OAuth-приложение

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666',
  {
    method: 'PATCH',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      status: 'RESOLVED',
      resolution: 'Исправлено в релизе 2026-04-19. Пустой filter теперь возвращает 200 с пустым массивом.',
    }),
  },
)
const { data } = await res.json()

Отзыв обращения

Автор обращения может отозвать его обычным ключом, которым создал — телом строго { "status": "WITHDRAWN" }. Отзыв доступен, пока обращение не закрыто.

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666 \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "WITHDRAWN" }'

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.id string UUID обращения
data.category string Категория
data.title string Заголовок
data.status string Обновлённый статус
data.resolution string · null Текущая резолюция
data.resolvedAt string · null Дата закрытия. Проставляется при переходе в RESOLVED или WITHDRAWN и обнуляется при возврате в активный статус из любого закрытого — RESOLVED, WITHDRAWN или ARCHIVED

Пример ответа

JSON
{
  "success": true,
  "data": {
    "id": "a1b2c3d4-1111-2222-3333-444455556666",
    "category": "BUG",
    "title": "POST /v1/deals/search возвращает 500 при пустом filter",
    "status": "RESOLVED",
    "resolution": "Исправлено в релизе 2026-04-19. Пустой filter теперь возвращает 200 с пустым массивом.",
    "resolvedAt": "2026-04-19T12:00:00.000Z"
  }
}

Пример ответа при ошибке

403 — обновление без скоупа vibe:feedback:

JSON
{
  "success": false,
  "error": {
    "code": "FEEDBACK_SCOPE_REQUIRED",
    "message": "Requires management key or vibe:feedback scope to update feedback"
  }
}

Ошибки

HTTP Код Описание
403 FEEDBACK_SCOPE_REQUIRED Обновление статуса или резолюции без скоупа vibe:feedback
404 NOT_FOUND Обращение не существует или недоступно ключу
409 FEEDBACK_CLOSED Автор пытается отозвать уже закрытое обращение (RESOLVED, ARCHIVED или WITHDRAWN)
401 MISSING_API_KEY Не передан заголовок X-Api-Key

Полный список общих ошибок API — Ошибки.

Известные особенности

Перевод в RESOLVED уведомляет автора. При закрытии проставляются resolvedAt и resolvedBy, а автору уходит письмо с текстом резолюции, если в профиле указана почта. Переводите в RESOLVED только после того, как исправление доступно — иначе автор получит письмо «исправлено» раньше самого исправления.

Возврат в активный статус обнуляет отметку о закрытии, но не текст резолюции. Переход из любого закрытого статуса — RESOLVED, WITHDRAWN или ARCHIVED — в один из активных (NEW, REVIEWING, AWAITING_USER, NEEDS_REVIEW) обнуляет resolvedAt и resolvedBy. Поле resolution не меняется: если вы его не передали, прежний текст остаётся — у обращения, возвращённого из ARCHIVED, сохраняется и причина архивации. Чтобы заменить текст, передайте resolution в том же запросе; чтобы очистить поле — передайте "resolution": null.

Обратное направление правило не затрагивает: переход в ARCHIVED отметку о закрытии сохраняет — архивация хранит историю решения. Переход между активными статусами её тоже не трогает.

Комментарий, переоткрывающий обращение, ведёт себя так же. Добавление комментария с активным статусом обнуляет resolvedAt и resolvedBy и не трогает resolution — ровно как обновление. Разница в другом: комментарий ещё и попадает в ленту обращения, а resolution перезаписывает только тогда, когда сам закрывает обращение.

Терминальность зависит от действия. Для автора обычным ключом WITHDRAWN и ARCHIVED — терминальные состояния: отозвать или прокомментировать такое обращение нельзя. RESOLVED терминален только для отзыва — комментарий автора возвращает решённое обращение в работу. Ключ со скоупом vibe:feedback может сменить статус любого закрытого обращения.

Смотрите также