
## Удалить запись доступа

`DELETE /v1/infra/servers/:id/access/:accessId`

Удаляет запись доступа — пользователя или отдел — из списка BLACKHOLE-сервера. Эндпоинт универсальный: один и тот же `accessId` может относиться либо к пользователю (`BlackHoleAccess`), либо к отделу (`BlackHoleDepartment`) — платформа сначала ищет в первой таблице, потом во второй. После удаления запись исчезает из [`GET /access`](./access-list.md).

## Параметры

| Параметр | В | Тип | Обяз. | Описание |
|----------|---|-----|:-----:|----------|
| `id` | path | string (UUID) | да | ID BLACKHOLE-сервера |
| `accessId` | path | string (UUID) | да | ID записи доступа из [`GET /access`](./access-list.md) или [`POST /access`](./access-add.md) |

## Примеры

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

```bash
curl -X DELETE -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/access/b3a6f8d1-3c2a-4e17-9f0b-1a7c2d4e5f60
```

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

```bash
curl -X DELETE -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  https://vibecode.bitrix24.tech/v1/infra/servers/SERVER_ID/access/ACCESS_ID
```

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

```javascript
const res = await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/access/${accessId}`,
  {
    method: 'DELETE',
    headers: { 'X-Api-Key': 'YOUR_API_KEY' },
  }
)
const { success } = await res.json()
if (success) console.log('Запись удалена')
```

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

```javascript
await fetch(
  `https://vibecode.bitrix24.tech/v1/infra/servers/${serverId}/access/${accessId}`,
  {
    method: 'DELETE',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
    },
  }
)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` при успешном удалении |

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

```json
{ "success": true }
```

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

404 — запись не найдена (уже удалена, неверный accessId, либо accessId другого сервера):

```json
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Access entry not found"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `BLACKHOLE_ONLY` | Сервер в режиме OPEN |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |
| 403 | `INFRA_FORBIDDEN_FOR_COWORK_KEY` | Вызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — [Проектный ключ для деплоя](/docs/cowork/deploy-key) |
| 403 | `SERVER_ROLE_FORBIDDEN` | Вы состоите в команде разработки этого сервера с ролью «Разработчик», а операция открыта роли «Администратор». В `error.hint` придут ваша роль, требуемый порог и перечень открытых вам вызовов. Разбор ролей — [Список серверов](/docs/infra/servers/list) |
| 404 | `NOT_FOUND` | Сервер не существует, привязан к другому API-ключу, и вы не состоите в его команде разработки, либо запись не найдена (неверный `accessId`, уже удалена или принадлежит другому серверу) |
| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |

Полный список общих ошибок API — [Ошибки](/docs/errors).

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

- **Физическое удаление, не пометка на удаление.** Запись стирается из базы. Восстановить нельзя — придётся повторно вызывать [`POST /access`](./access-add.md).
- **`accessId` привязан к серверу.** Попытка удалить запись доступа другого сервера (правильный `accessId`, но неверный `:id` в пути) вернёт 404 `NOT_FOUND`. Платформа намеренно не раскрывает факт существования записей чужих серверов.
- **Удаление не меняет политику.** Если вы удалите всех пользователей при `accessPolicy: "NAMED_USERS"`, политика останется `NAMED_USERS` (и приложение станет недоступно никому, кроме владельца ключа). Чтобы «полностью вернуть приватность» — меняйте политику обратно на `OWNER_ONLY` через [`PATCH /access-policy`](./access-policy.md).
- **Владельца ключа удалить нельзя.** Владелец всегда имеет доступ, даже если его нет в списке. Чтобы забрать у себя доступ — нужен другой API-ключ.

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

- [Список доступа](./access-list.md)
- [Добавить пользователя/отдел](./access-add.md)
- [Политика доступа](./access-policy.md)
