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

Удалить объект

DELETE /v1/storage/objects/:key

Помечает объект как удалённый (мягкое удаление). Поле deletedAt объекта заполняется датой удаления. Физические байты остаются в хранилище до 30 дней, затем удаляются автоматически.

Сам DELETE не восстанавливает и не освобождает объект: GET, HEAD, старый анонимный URL PUBLIC-объекта и повторный DELETE возвращают 410 STORAGE_OBJECT_DELETED в течение периода хранения. Вернуть прежние байты через API невозможно. Новые байты в ту же строку может записать прямая загрузка (путь A), если объект имеет статус COMPLETED и не содержит multipart-сессии. Составная загрузка (путь C) также может переиспользовать подходящий личный COMPLETED-объект после этого явного DELETE. Оба пути сохраняют id, createdAt, key, физический адрес, owner tuple и visibility, а deletedAt очищают после успешной загрузки. Путь B остаётся отключён с 503; неподходящие удалённые состояния отвечают 409.

Параметры

Параметр Тип Обяз. Описание
key (path) string да Логический ключ объекта, URL-кодированный. Для ключей с / (например users/42/avatar.png) передавать как users%2F42%2Favatar.png. Список ключей: GET /v1/storage/objects

Примеры

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

Terminal
curl -s -X DELETE "https://vibecode.bitrix24.tech/v1/storage/objects/docs-test%2Fverify.txt" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl -s -X DELETE "https://vibecode.bitrix24.tech/v1/storage/objects/docs-test%2Fverify.txt" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

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

javascript
const key = encodeURIComponent('docs-test/verify.txt')
const res = await fetch(`https://vibecode.bitrix24.tech/v1/storage/objects/${key}`, {
  method: 'DELETE',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})
const body = await res.json()
if (body.object?.deletedAt) {
  console.log('Объект удалён:', body.object.deletedAt)
}

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

javascript
const key = encodeURIComponent('docs-test/verify.txt')
const res = await fetch(`https://vibecode.bitrix24.tech/v1/storage/objects/${key}`, {
  method: 'DELETE',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const body = await res.json()
if (body.object?.deletedAt) {
  console.log('Объект удалён:', body.object.deletedAt)
}

Поля ответа

Поле Тип Описание
object.id string (CUID) Внутренний идентификатор объекта. Список: GET /v1/storage/objects
object.key string Логический ключ. Список: GET /v1/storage/objects
object.contentType string MIME-тип содержимого
object.sizeBytes string Размер в байтах (строка из-за ограничений JSON на большие числа)
object.sha256 string | null SHA-256 хэш содержимого, если был вычислен при загрузке
object.visibility string PRIVATE или PUBLIC
object.uploadStatus string Статус загрузки (COMPLETED)
object.createdAt string (ISO 8601) Дата создания
object.deletedAt string (ISO 8601) Дата удаления — заполнено после успешного удаления
object.contentUpdatedAt string (ISO 8601) Когда содержимое последний раз стало актуальным. Мягкое удаление это поле не двигает

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

JSON
{
  "object": {
    "id": "cmv6mzshp1cpn4bqqik5gchff",
    "key": "docs-test/verify.txt",
    "contentType": "text/plain",
    "sizeBytes": "40",
    "sha256": "a7056068db07cebc7b4d646c1ae83f45b4bda578c57b76b582f289bfaa8f8a34",
    "visibility": "PRIVATE",
    "uploadStatus": "COMPLETED",
    "createdAt": "2026-10-13T12:08:01.021Z",
    "deletedAt": "2026-10-13T12:08:01.377Z",
    "contentUpdatedAt": "2026-10-13T12:08:01.020Z"
  }
}

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

410 — объект уже удалён (повторный вызов):

JSON
{
  "success": false,
  "error": {
    "code": "STORAGE_OBJECT_DELETED",
    "message": "Object docs-test/verify.txt was deleted"
  }
}

Ошибки

HTTP Код Описание
400 STORAGE_INVALID_KEY Ключ содержит недопустимые символы, начинается с / или ., содержит .. или превышает 1024 символа
401 MISSING_API_KEY Не передан заголовок X-Api-Key
403 STORAGE_SCOPE_REQUIRED API-ключ не имеет скоупа vibe:storage
404 STORAGE_OBJECT_NOT_FOUND Объект с таким ключом не найден или принадлежит другому владельцу
409 STORAGE_MULTIPART_IN_PROGRESS Объект находится в состоянии незавершённой составной загрузки — сначала вызовите /multipart/abort
410 STORAGE_OBJECT_DELETED Объект уже был удалён ранее
503 STORAGE_STS_UNAVAILABLE Временная недоступность сервиса выдачи учётных данных хранилища — повторите запрос
503 STORAGE_FEATURE_DISABLED Хранилище временно недоступно на платформе

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

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

  • Ключи с / в пути. Косая черта в ключе не является разделителем маршрута — передавайте её URL-кодированной. В JavaScript используйте encodeURIComponent(key).

  • Удалённый объект немедленно недоступен. Пока подходящая загрузка путём A или, для личного ключа после явного DELETE, путём C не запишет новые байты, GET и HEAD по ключу возвращают 410 STORAGE_OBJECT_DELETED весь 30-дневный период до физической уборки. Запрос списка объектов удалённые объекты не включает. Переиспользование строки — это замена новыми байтами, а не восстановление прежнего содержимого.

  • Снимки исходного кода этим методом не удаляют. Объекты под префиксом source/ принадлежат серверам и приложениям, и логический ключ у разных владельцев совпадает — source/current.tar.gz есть у каждого. Запрос находит по ключу одну строку из доступных, поэтому удалится произвольная. Версии убирают операциями с исходниками — Хранилище исходного кода.

  • Ключ приложения без сессии сотрудника видит только общий файл. Сотрудники приложения занимают логические имена независимо друг от друга, поэтому под одним именем может лежать несколько объектов. Запрос ключом приложения БЕЗ заголовка Authorization адресует общий файл приложения; если под этим именем есть только персональные файлы сотрудников, ответ — 404 STORAGE_OBJECT_NOT_FOUND. Чтобы обратиться к файлу сотрудника, передайте его сессию в Authorization: Bearer либо используйте идентификатор объекта.

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