Для AI-агентов: markdown этой страницы — /docs-content/infra/access/audience-proposals.md индекс документации — /llms.txt
Проверить или отменить запрос доступа
GET /v1/infra/servers/:id/audience-proposals/:proposalId
POST /v1/infra/servers/:id/audience-proposals/:proposalId/cancel
Позволяют исходному API-ключу прочитать свой запрос на изменение доступа или отменить его. proposalId приходит в error.details.proposalId ответа 409 AUDIENCE_APPROVAL_REQUIRED на исходное действие. Другой ключ того же владельца не получает доступ к запросу.
API-ключ не может подтвердить запрос. Решение принимает человек, вошедший в кабинет. Состояние APPROVED означает согласие, а не применение: исходный вызов нужно повторить с тем же ключом, точными параметрами и approvalId. Отмена сама по себе не меняет доступ.
Параметры
| Параметр | В | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
path | string (UUID) | да | ID сервера из исходного действия; список — Список серверов |
proposalId |
path | string (UUID) | да | ID запроса из error.details.proposalId |
Для отмены тело необязательно. Если оно передано, допустим только пустой объект {}. Идентичность вызывающего определяется проверенным X-Api-Key, а не полями тела.
Примеры
curl — проверить
curl "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/audience-proposals/PROPOSAL_ID" -H "X-Api-Key: YOUR_API_KEY"
curl — отменить
curl -X POST "https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/audience-proposals/PROPOSAL_ID/cancel" -H "X-Api-Key: YOUR_API_KEY"
JavaScript — проверить
const response = await fetch(
`https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/audience-proposals/${proposalId}`,
{ headers: { 'X-Api-Key': apiKey } },
)
const { proposal } = await response.json()
console.log(proposal.state)
JavaScript — отменить
const response = await fetch(
`https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/audience-proposals/${proposalId}/cancel`,
{ method: 'POST', headers: { 'X-Api-Key': apiKey } },
)
const { proposal } = await response.json()
console.log(proposal.state)
Поля ответа
Успешный ответ имеет вид { "proposal": ... }, без обёртки success или data. Таблица описывает основные поля; ответ также содержит проверяемое действие, исходный, предполагаемый и текущий состав доступа, названия участников и различия.
| Поле | Тип | Описание |
|---|---|---|
proposal.id |
string (UUID) | ID запроса |
proposal.state |
string | PENDING, APPROVED, APPLIED, REJECTED, CANCELLED, EXPIRED или STALE |
proposal.baseRevision |
string | Версия доступа при создании; десятичная строка |
proposal.currentRevision |
string | Текущая версия доступа; десятичная строка |
proposal.expiresAt |
string | Срок запроса в ISO 8601 |
proposal.canDecide |
boolean | Для API-ключа всегда false |
proposal.canCancel |
boolean | Можно ли отменить запрос сейчас |
proposal.resultEntityId |
string (UUID), optional | ID созданной записи после применения; не токен и не секретная ссылка |
Пример ответа
Ниже показаны только ID, состояние и версии из ответа проверки:
{
"proposal": {
"id": "00000000-0000-4000-8000-000000000001",
"state": "PENDING",
"baseRevision": "0",
"currentRevision": "0"
}
}
После успешной отмены состояние — CANCELLED.
Пример ответа при ошибке
404 — запрос отсутствует или принадлежит другому вызывающему:
{
"success": false,
"error": { "code": "NOT_FOUND", "message": "Proposal not found" }
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | VALIDATION_ERROR |
Неверный UUID или непустое тело отмены |
| 401 | MISSING_API_KEY |
Ключ не передан |
| 401 | INVALID_API_KEY |
Ключ не опознан |
| 403 | AUDIENCE_APPROVAL_FORBIDDEN |
Текущий ключ, его владелец или привязка к порталу больше не допускают действие |
| 404 | NOT_FOUND |
Нет сервера или запроса в нужном портале либо запрос создан другим вызывающим |
| 409 | AUDIENCE_APPROVAL_REPLAY |
Отмена: запрос уже применён, отменён или завершён другим решением |
| 409 | AUDIENCE_APPROVAL_STALE |
Отмена: версия доступа изменилась |
| 410 | AUDIENCE_APPROVAL_EXPIRED |
Отмена: срок запроса истёк |
Полный список общих ошибок API — Ошибки.
Известные особенности
- Исходный ключ остаётся обязательным. Выдача нового ключа тому же владельцу не переносит запрос. Даже ключ со scope
vibe:coworkможет проверить и отменить собственный запрос, если остальные текущие проверки проходят; это не даёт ему права выполнять изменяющие infra-операции. - Чтение обнаруживает устаревший запрос. Проверка может вернуть
STALEилиEXPIRED. Такое согласие неприменимо; создайте новый запрос исходным действием. - Секреты не выдаются через отчёт. Bearer/JWT и секретные ссылки получает только исходный вызов после применения, а не эти методы.