[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-storage\u002Fobjects\u002Fdelete":3,"docs-tabs-storage\u002Fobjects\u002Fdelete":6},{"content":4,"lastmod":5},"\n## Удалить объект\n\n`DELETE \u002Fv1\u002Fstorage\u002Fobjects\u002F:key`\n\nПомечает объект как удалённый (мягкое удаление). Поле `deletedAt` объекта заполняется датой удаления; физические байты остаются в хранилище до 30 дней, затем удаляются автоматически. Восстановление объекта через API недоступно.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `key` (path) | string | да | Логический ключ объекта, URL-кодированный. Для ключей с `\u002F` (например `users\u002F42\u002Favatar.png`) передавать как `users%2F42%2Favatar.png` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -s -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Fdocs-test%2Fverify.txt\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -s -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002Fdocs-test%2Fverify.txt\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst key = encodeURIComponent('docs-test\u002Fverify.txt')\nconst res = await fetch(`https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002F${key}`, {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\nconst body = await res.json()\nif (body.object?.deletedAt) {\n  console.log('Объект удалён:', body.object.deletedAt)\n}\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst key = encodeURIComponent('docs-test\u002Fverify.txt')\nconst res = await fetch(`https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fstorage\u002Fobjects\u002F${key}`, {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst body = await res.json()\nif (body.object?.deletedAt) {\n  console.log('Объект удалён:', body.object.deletedAt)\n}\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `object.id` | string (CUID) | Внутренний идентификатор объекта |\n| `object.key` | string | Логический ключ |\n| `object.contentType` | string | MIME-тип содержимого |\n| `object.sizeBytes` | string | Размер в байтах (строка из-за ограничений JSON на большие числа) |\n| `object.sha256` | string \\| null | SHA-256 содержимого, если был передан при загрузке |\n| `object.visibility` | string | `PRIVATE` или `PUBLIC` |\n| `object.uploadStatus` | string | Статус загрузки (`COMPLETED`) |\n| `object.createdAt` | string (ISO 8601) | Дата создания |\n| `object.deletedAt` | string (ISO 8601) | Дата удаления — заполнено после успешного удаления |\n\n## Пример ответа\n\n```json\n{\n  \"object\": {\n    \"id\": \"cmpfkc57v0akio510qclwfn7t\",\n    \"key\": \"docs-test\u002Fverify.txt\",\n    \"contentType\": \"text\u002Fplain\",\n    \"sizeBytes\": \"40\",\n    \"sha256\": null,\n    \"visibility\": \"PRIVATE\",\n    \"uploadStatus\": \"COMPLETED\",\n    \"createdAt\": \"2026-05-21T14:05:20.092Z\",\n    \"deletedAt\": \"2026-05-21T14:05:36.880Z\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n410 — объект уже удалён (повторный вызов):\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"STORAGE_OBJECT_DELETED\",\n    \"message\": \"Object docs-test\u002Fverify.txt was deleted\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `STORAGE_INVALID_KEY` | Ключ содержит недопустимые символы, начинается с `\u002F` или `.`, содержит `..` или превышает 1024 символа |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 403 | `STORAGE_SCOPE_REQUIRED` | API-ключ не имеет скоупа `vibe:storage` |\n| 404 | `STORAGE_OBJECT_NOT_FOUND` | Объект с таким ключом не найден или принадлежит другому владельцу |\n| 409 | `STORAGE_MULTIPART_IN_PROGRESS` | Объект находится в состоянии незавершённой составной загрузки — сначала вызовите [`\u002Fmultipart\u002Fabort`](\u002Fdocs\u002Fstorage\u002Fupload\u002Fmultipart-abort) |\n| 410 | `STORAGE_OBJECT_DELETED` | Объект уже был удалён ранее |\n| 503 | `STORAGE_STS_UNAVAILABLE` | Временная недоступность сервиса выдачи учётных данных хранилища — повторите запрос |\n| 503 | `STORAGE_FEATURE_DISABLED` | Хранилище временно недоступно на платформе |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Ключи с `\u002F` в пути.** Косая черта в ключе не является разделителем маршрута — передавайте её URL-кодированной. В JavaScript используйте `encodeURIComponent(key)`.\n- **Удалённый объект немедленно недоступен.** GET и HEAD по ключу возвращают `410 STORAGE_OBJECT_DELETED` до истечения 30-дневного периода физического удаления. Запрос списка объектов удалённые объекты не включает.\n\n## Смотрите также\n\n- [Получить объект](\u002Fdocs\u002Fstorage\u002Fobjects\u002Fget) — `GET \u002Fv1\u002Fstorage\u002Fobjects\u002F:key`\n- [Список объектов](\u002Fdocs\u002Fstorage\u002Fobjects\u002Flist) — `GET \u002Fv1\u002Fstorage\u002Fobjects`\n- [Отменить составную загрузку](\u002Fdocs\u002Fstorage\u002Fupload\u002Fmultipart-abort) — `POST \u002Fv1\u002Fstorage\u002Fobjects\u002Fmultipart\u002Fabort`\n- [Публичный доступ GET](\u002Fdocs\u002Fstorage\u002Fobjects\u002Fpublic-get) — `GET \u002Fv1\u002Fpublic-storage\u002F:portalId\u002F:objectId`\n","2026-06-23",{}]