Для AI-агентов: markdown этой страницы — /docs-content/source-storage/registry.md индекс документации — /llms.txt
Реестр исходников и состояние портала
Где посмотреть все задепонированные снапшоты сразу — страница кабинета и её API-двойник GET /v1/me/sources. Плюс программная проверка того, включено ли сохранение исходников на портале.
Обзор хранилища и справочник эндпоинтов — Хранилище исходного кода.
Проверка состояния портала
GET /v1/me возвращает блок data.capabilities.apps.sourceStorage:
При включённом сохранении:
{
"capabilities": {
"apps": {
"sourceStorage": {
"enabled": true,
"requiredBeforeDeploy": false,
"automaticOnDeploy": true,
"limits": {
"maxBlobBytes": 524288000
},
"endpoint": "POST /v1/apps/:id/sources",
"mcpToolName": "save_sources",
"contentTypes": [
"application/gzip",
"application/x-tar",
"application/zip",
"application/octet-stream"
],
"docs": "https://vibecode.bitrix24.tech/docs-content/source-storage.md"
}
}
}
}
Вместе с лимитами блок отдаёт и указатели на способ сохранения: endpoint, mcpToolName, допустимые contentTypes и адрес этой документации.
Поле freshnessWindowMinutes приходит в этом блоке, только пока публикация проверяет возраст снапшота. Его отсутствие читается как «возраст не проверяется», поэтому по составу блока видно, какое правило действует для вашего портала.
При отключённом сохранении:
{
"capabilities": {
"apps": {
"sourceStorage": {
"enabled": false,
"requiredBeforeDeploy": false,
"automaticOnDeploy": false,
"disabledBy": "platform",
"readOperations": "available",
"reactivation": {
"scope": "platform",
"permission": "platform admin"
}
}
}
}
}
Два набора полей взаимоисключающие: при enabled: false указателей на сохранение в блоке нет. Поле disabledBy — "platform" (функция не включена на уровне платформы) или "portal" (владелец портала отключил). Поле readOperations: "available" означает, что список версий и скачивание остаются доступными даже при отключённом сохранении. Блок reactivation указывает, на каком уровне (платформа или портал) включается функция и какие права для этого нужны.
Отключение для портала
Владелец портала может отключить сохранение исходников через раздел администрирования (PATCH /api/admin/source-storage с телом { "sourceStorageEnabled": false }, требует сессии администратора). При отключении:
POST /v1/apps/:id/sourcesвозвращает200 { skipped: true, reason: "DISABLED_FOR_PORTAL" }.POST /v1/apps/:id/publishне проверяет наличие снапшота.GET /v1/apps/:id/sourcesпродолжает возвращать ранее сохранённые версии.GET /v1/apps/:id/sources/:versionId/downloadостаётся доступным.
История сохранений переживает повторное включение — ранее созданные версии остаются доступными.
Реестр исходников
Страница «Исходники приложений» доступна в личном кабинете через левое меню (иконка пакета). Она показывает сводный список всех задепонированных снапшотов — чтобы передать код новому разработчику или возобновить AI-сессию.
Кто что видит:
- Участник портала (MEMBER) — только свои снапшоты (те, что он загружал).
- Администратор портала (ADMIN) — все снапшоты портала, включая снапшоты других участников. Может скачать любой снапшот.
Как скачать:
- Откройте «Исходники приложений» в меню.
- Найдите нужную строку (сервер или приложение).
- В меню строки выберите «Скачать последнюю версию» — браузер загрузит архив.
У строк-приложений в меню строки есть пункт «История версий» — он открывает страницу истории версий приложения в разделе «Хранилище».
Примечание: страница работает независимо от того, включено ли депонирование на уровне платформы — исторические снапшоты доступны даже если новые сохранения временно отключены.
Сводный реестр исходников — `GET /v1/me/sources`
API-двойник страницы кабинета «Исходники приложений». Возвращает список владельцев снапшотов исходников (серверов и legacy-приложений) по всему, чем владеет вызывающий ключ. Ключ администратора аккаунта (ADMIN) видит весь аккаунт.
Требует портального ключа API. Менеджмент-ключ или ключ без привязки к порталу → 403 PORTAL_KEY_REQUIRED.
Параметры запроса
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
page |
number | 1 |
Номер страницы. |
limit |
number | 25 |
Размер страницы, максимум 100. |
search |
string | — | Фильтр по названию / имени сервера / имени владельца. |
Ответ
HTTP 200:
{
"success": true,
"data": [
{
"kind": "server",
"ownerKey": "8de64f8d-...",
"title": "Prod",
"server": {
"id": "8de64f8d-...",
"name": "srv-prod",
"displayName": "Prod",
"mode": "blackhole",
"status": "sleeping",
"blackholeStatus": "DISCONNECTED",
"deleted": false
},
"app": null,
"user": { "id": "8f1a2b3c-...", "name": "Alex" },
"latestVersionId": "v4",
"latestSavedAt": "2026-05-21T10:15:30.000Z",
"versionsCount": 4,
"totalSizeBytes": 552960,
"reachableViaApi": true,
"listEndpoint": "/v1/infra/servers/8de64f8d-.../sources",
"latestDownloadEndpoint": "/v1/infra/servers/8de64f8d-.../sources/v4/download"
}
],
"total": 1,
"page": 1,
"limit": 25
}
Поля строки
| Поле | Тип | Описание |
|---|---|---|
kind |
string | server или legacy-app. |
ownerKey |
string | Идентификатор владельца строки: id сервера (kind: server) или id приложения (kind: legacy-app). |
title |
string | Отображаемое название (сервер или приложение). |
server |
object | null | Для kind: server: id, name, displayName, mode, status (в нижнем регистре), blackholeStatus, deleted. Иначе null. |
app |
object | null | Для kind: legacy-app: id, title. Иначе null. |
user |
object | null | Владелец: id, name. Может быть null. |
latestVersionId |
string | Идентификатор самой свежей версии (vN). |
latestSavedAt |
string | Время сохранения последней версии (ISO 8601). |
versionsCount |
number | Количество версий. |
totalSizeBytes |
number | Суммарный размер архивов в байтах. |
reachableViaApi |
boolean | Доступна ли запись через V1-эндпоинты (см. ниже). |
listEndpoint |
string | null | Готовый путь для получения списка версий владельца, либо null. |
latestDownloadEndpoint |
string | null | Готовый путь для скачивания последней версии, либо null. |
reachableViaApi. Значениеfalse— у сервера, чей управляющий ключ был удалён, это осиротевшая запись, и у мягко удалённого legacy-приложения. У таких строкlistEndpointиlatestDownloadEndpointравныnull. Строка всё равно попадает в список для видимости, но детальный переход по V1 на этого владельца вернёт404. Мягко удалённый сервер остаётсяtrue: чтение и очистка его версий работают — Версии удалённого сервера.- Статус сервера. Для сервера Black Hole значение
status: "sleeping"— это нормальное «припаркованное» состояние (сервер просыпается по требованию), а не сбой. Сопоставляйте его сblackholeStatus, чтобы отличить «припаркован, проснётся по требованию» от реальной проблемы. Значение — статус из БД, поддерживаемый флот-поллером (согласуется не мгновенно, ~15 с), а не результат живой сверки с провайдером. - Отличие от
GET /v1/infra/servers. Тот список ограничен строго серверами вызывающего ключа, поэтому сервер, привязанный к другому ключу того же владельца, там отсутствует, но присутствует в этом реестре.
Коды ошибок
| HTTP | Код | Когда возвращается |
|---|---|---|
| 403 | PORTAL_KEY_REQUIRED |
Ключ не привязан к порталу — менеджмент-ключ реестр не читает. |
Полный справочник кодов — Коды ошибок.