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

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

PATCH /v1/feedback/:id

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

Параметры

Параметр Тип Обяз. Описание
Параметрid (path) Типstring Обяз.да ОписаниеUUID обращения. Список: GET /v1/feedback

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

Поле Тип Обяз. Описание
Полеstatus Типstring Обяз.нет ОписаниеНовый статус — значения в таблице Статусы
Поле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

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

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 Код Описание
HTTP400 КодVALIDATION_ERROR Описаниеresolution не строка и не null
HTTP403 КодFEEDBACK_SCOPE_REQUIRED ОписаниеОбновление статуса или резолюции без скоупа vibe:feedback
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч только для чтения — см. права доступа
HTTP404 КодNOT_FOUND ОписаниеОбращение не существует или недоступно ключу
HTTP409 КодFEEDBACK_CLOSED ОписаниеАвтор пытается отозвать уже закрытое обращение (RESOLVED, ARCHIVED или WITHDRAWN)
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key

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

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

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

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

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

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

Регистр status не важен, неизвестное значение игнорируется. resolved и RESOLVED равнозначны. Значение вне списка статусов не меняет статус и не вызывает ошибку: ответ 200 с прежним статусом.

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

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