Для AI-агентов: markdown этой страницы — /docs-content/source-storage/versions-get.md индекс документации — /llms.txt
Получить метаданные версии
GET /v1/apps/:id/sources/:versionId
Возвращает метаданные одной версии исходного кода приложения, без архива. Нужен, когда идентификатор версии уже известен и полный список забирать незачем.
Операция доступна и при отключённом сохранении исходников: ранее сохранённая история остаётся читаемой.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id (path) |
UUID | да | Идентификатор приложения. Получить — GET /v1/apps. |
versionId (path) |
string | да | Идентификатор версии вида v<N>. Получить — Список версий. Номер savedVersionId из ответа деплоя сервера на личном ключе относится к истории сервера, а не приложения: по нему этот метод вернёт другую версию приложения или 404 VERSION_NOT_FOUND. Такую версию запрашивайте через серверные эндпоинты. |
Примеры
curl — личный ключ
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.tech/v1/apps/<APP_ID>/sources/v1
curl — OAuth-приложение
curl -H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
https://vibecode.bitrix24.tech/v1/apps/<APP_ID>/sources/v1
JavaScript — личный ключ
const res = await fetch(
`https://vibecode.bitrix24.tech/v1/apps/${appId}/sources/v1`,
{ headers: { 'X-Api-Key': 'YOUR_API_KEY' } },
)
const { data } = await res.json()
console.log(data.versionId, data.tags, data.note)
JavaScript — OAuth-приложение
const res = await fetch(
`https://vibecode.bitrix24.tech/v1/apps/${appId}/sources/v1`,
{
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
},
)
const { data } = await res.json()
console.log(data.versionId, data.tags, data.note)
Поля ответа
Поля data.id в этом ответе нет: внутренний идентификатор записи приходит только при сохранении.
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе. |
data.versionId |
string | Идентификатор версии вида v<N>. |
data.filename |
string | Имя файла в хранилище. Содержит суффикс -published или -manual по текущим тегам версии, при обоих тегах — -published. |
data.contentType |
string | null | Тип архива, с которым его сохранили: application/gzip, application/x-tar, application/zip или application/octet-stream. null — у ранних версий, для которых тип не записан. |
data.timestamp |
string | Время сохранения (ISO 8601, UTC). |
data.size |
number | Размер архива в байтах. |
data.sha256 |
string | SHA-256 содержимого архива. Используется для дедупликации в пределах владельца. |
data.tags |
string[] | Теги версии. manual и published защищают её от автоматической очистки, остальные — произвольные метки из заголовка X-Tags при сохранении или из PATCH. |
data.savedBy.userId |
string | null | Идентификатор пользователя Вайбкод. |
data.savedBy.session |
string | null | Идентификатор AI-сессии из заголовка X-AI-Session-Id. |
data.linkedDeployId |
string | null | Метка последнего события с версией. deploy:… — версию сохранил или подтвердил деплой. publish:<время> — версию опубликовали через POST /v1/apps/:id/publish. Публикация перезаписывает метку деплоя. null — у версии не было ни деплоя, ни публикации. |
data.deployStatus |
string | null | Чем закончился последний деплой этой версии: success или failed. null — версию не деплоили: например, сохранили вручную и не передавали в source.versionId деплоя. Публикация поле не меняет, но у части старых опубликованных версий success записан публикацией, а не деплоем. |
data.note |
string | null | Комментарий из заголовка X-Note при сохранении или из PATCH. У версии, которую сохранил деплой, — текст поля changelog деплоя, а без него служебная строка Auto-saved on deploy … с той же меткой деплоя, что в linkedDeployId. |
data.serverContext |
object | null | Сервер, которым управляет ключ этого приложения (vibe_app_*), если версия с ним связана. Данные сервера — на момент запроса. null — версия с сервером не связана. |
data.serverContext.serverId |
string | Идентификатор сервера. Получить — GET /v1/infra/servers. |
data.serverContext.serverName |
string | Системное имя сервера. |
data.serverContext.serverDisplayName |
string | Отображаемое имя сервера. Пустая строка, если у сервера его нет. |
data.serverContext.linkedApp |
object | null | Приложение, на которое выписан управляющий ключ сервера. null — сервер управляется личным ключом. |
data.serverContext.linkedApp.appId |
string | Идентификатор приложения. Получить — GET /v1/apps. |
data.serverContext.linkedApp.title |
string | Название приложения. |
Пример ответа
HTTP 200:
{
"success": true,
"data": {
"versionId": "v1",
"filename": "2026-08-04T10-01-25-947Z-v1.tar.gz",
"contentType": "application/gzip",
"timestamp": "2026-08-04T10:01:25.947Z",
"size": 49504,
"sha256": "e28aaf8af203804c934e6881c94472a420174f58c9442ecef82dba44c6cf989b",
"tags": [],
"savedBy": {
"userId": "48bdfd33-5fbe-4ad1-a02c-9b5c7ae65f77",
"session": null
},
"linkedDeployId": null,
"deployStatus": null,
"note": "Первая версия",
"serverContext": null
}
}
Пример ответа при ошибке
404 — версии с таким идентификатором у приложения нет:
{
"success": false,
"error": {
"code": "VERSION_NOT_FOUND",
"message": "Version v99 not found"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_VERSION_ID |
Формат versionId не соответствует v<целое неотрицательное число>. |
| 403 | SOURCE_APP_ID_MISMATCH |
Вызов сделан ключом авторизации vibe_app_…, выписанным на другое приложение. Такой ключ обращается только к снапшотам своего приложения, даже если оба приложения создал один автор. |
| 403 | NOT_AUTHORIZED |
Личный ключ не принадлежит ни автору приложения, ни администратору портала и не выписан на это приложение. |
| 404 | APP_NOT_FOUND |
Приложение не существует, удалено или принадлежит другому порталу. |
| 404 | VERSION_NOT_FOUND |
Версия с таким versionId не существует или была удалена. |
Полный список общих ошибок API — Ошибки.