Для AI-агентов: markdown этой страницы — /docs-content/infra/database/rows.md индекс документации — /llms.txt
Получить строки таблицы
GET /v1/infra/servers/:id/db/tables/:table/rows
Возвращает строки таблицы или представления из SQLite-базы приложения постранично, с сортировкой по колонке и одним фильтром. Вместе со строками приходят ключи, по которым отдельную строку можно изменить или удалить.
Когда эндпоинт отвечает — см. Когда база доступна.
Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
Параметрid (path) |
Типstring | Обяз.да | По умолч.— | ОписаниеID приложения с kind равным GALAXY_APP. Список: GET /v1/infra/servers |
Параметрtable (path) |
Типstring | Обяз.да | По умолч.— | ОписаниеТочное имя таблицы или представления, до 256 байт в UTF-8. Список: поле data.tables[].name в GET /db/schema |
Параметрfile (query) |
Типstring | Обяз.нет | По умолч.файл из VIBE_DB_PATH, иначе app.db |
ОписаниеПуть к файлу базы относительно /data, до 1024 байт в UTF-8. Список файлов: поле data.files[].file в GET /db. Абсолютный путь, выход за пределы /data и символическая ссылка дают 400 APP_DB_INVALID_FILE |
Параметрlimit (query) |
Типnumber | Обяз.нет | По умолч.100 |
ОписаниеЧисло строк на странице, от 1 до 500 |
Параметрoffset (query) |
Типnumber | Обяз.нет | По умолч.0 |
ОписаниеСколько строк пропустить, от 0 до 1000000 |
Параметрsort (query) |
Типstring | Обяз.нет | По умолч.— | ОписаниеКолонка для сортировки. Имя — из data.tables[].columns[].name в GET /db/schema |
Параметрorder (query) |
Типstring | Обяз.нет | По умолч.asc |
ОписаниеНаправление сортировки: asc или desc |
ПараметрfilterColumn (query) |
Типstring | Обяз.нет | По умолч.— | ОписаниеКолонка, по которой фильтруются строки. Имя — из той же схемы, что и для sort |
ПараметрfilterOp (query) |
Типstring | Обяз.нет | По умолч.— | ОписаниеУсловие фильтра: eq — значение колонки равно filterValue, contains — значение колонки, приведённое к тексту, содержит filterValue как подстроку с учётом регистра. Символы % и _ в contains ищутся как обычные символы, а не как шаблон |
ПараметрfilterValue (query) |
Типstring | Обяз.нет | По умолч.— | ОписаниеЗначение для сравнения, до 16 384 символов. Длину ограничивает и вся строка запроса: значение из 8 000 латинских символов проходит, из 12 000 — сервер отвечает 414 без JSON-тела. Пустая строка — отдельное значение, а не отсутствие значения |
ПараметрfilterValueIsNull (query) |
Типstring | Обяз.нет | По умолч.— | Описаниеtrue — отобрать строки, где в filterColumn записано SQL-значение NULL. Передаётся вместо filterValue и только с filterOp=eq |
Фильтр передаётся целиком или не передаётся вовсе: filterColumn, filterOp и одно из двух — filterValue или filterValueIsNull=true. Неполный фильтр, оба значения сразу, filterValueIsNull=true с contains, значение вне диапазона и любой параметр не из таблицы дают 400 VALIDATION_ERROR. Имя колонки в sort или filterColumn, которого нет в таблице, даёт 404 APP_DB_TABLE_NOT_FOUND.
Пагинация. За один вызов приходит не больше limit строк и не больше 1 МиБ JSON. Значение data.truncated равно true, когда за пределами страницы есть ещё строки или страница обрезана по размеру — тогда data.rowCount может оказаться меньше limit. Следующая страница запрашивается с offset, равным data.offset + data.rowCount.
Порядок строк в таблице и в представлении. В таблице строки сортируются по sort, затем по колонкам первичного ключа по возрастанию, затем по скрытому rowid, если он есть. Без sort порядок задаёт первичный ключ или rowid, поэтому страницы через offset не пересекаются и не теряют строки, пока данные не меняются. У представления такого добавочного порядка нет: страницы представления через offset могут повторять или пропускать строки.
Примеры
curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/infra/servers/7c2b1f08-3a4d-4e91-9b6c-2f5e8a1d0c33/db/tables/customers/rows?limit=2" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/infra/servers/7c2b1f08-3a4d-4e91-9b6c-2f5e8a1d0c33/db/tables/customers/rows?limit=2" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const appId = '7c2b1f08-3a4d-4e91-9b6c-2f5e8a1d0c33'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/infra/servers/${appId}/db/tables/customers/rows?limit=2`, {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log(data.columns, data.rows)
JavaScript — OAuth-приложение
const appId = '7c2b1f08-3a4d-4e91-9b6c-2f5e8a1d0c33'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/infra/servers/${appId}/db/tables/customers/rows?limit=2`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | ОписаниеВсегда true при успехе |
Полеdata.file |
Типstring | ОписаниеФайл базы, из которого прочитаны строки, — путь относительно /data |
Полеdata.table |
Типstring | ОписаниеИмя таблицы или представления из запроса |
Полеdata.columns |
Типarray | ОписаниеИмена колонок в порядке их следования в таблице. Повторяющиеся имена остаются отдельными элементами |
Полеdata.rows |
Типarray | ОписаниеСтроки страницы. Каждая строка — массив значений в порядке data.columns |
Полеdata.rows[][] |
Типstring, number, null, object | ОписаниеЗначение ячейки. Объект приходит в трёх случаях: { "type": "blob", "base64": "..." } — двоичные данные в base64, { "type": "integer", "value": "..." } — целое число по модулю больше 9 007 199 254 740 991 в виде строки, { "type": "float", "value": "NaN" } — нечисловое значение NaN, Infinity или -Infinity |
Полеdata.rowKeys |
Типarray | ОписаниеКлючи строк, по одному на каждую строку data.rows в том же порядке |
Полеdata.rowKeys[] |
Типstring, null | ОписаниеНепрозрачный ключ строки до 1024 символов — значение для :key в PATCH /db/tables/:table/rows/:key и DELETE /db/tables/:table/rows/:key. Ключ привязан к приложению, файлу и таблице, из которых прочитан. Берите его из ответа как есть, а не собирайте из значений колонок. null — строку нельзя изменить по ключу: это строка представления или виртуальной таблицы, у таблицы нет первичного ключа и скрытого rowid, в колонке первичного ключа этой строки записан NULL или двоичное значение, либо ключ длиннее 1024 символов |
Полеdata.rowCount |
Типnumber | ОписаниеЧисло строк на этой странице |
Полеdata.limit |
Типnumber | ОписаниеЗначение limit, с которым выполнен запрос |
Полеdata.offset |
Типnumber | ОписаниеЗначение offset, с которым выполнен запрос |
Полеdata.truncated |
Типboolean | Описаниеtrue — за пределами страницы есть ещё строки или страница обрезана по размеру 1 МиБ |
Полеdata.durationMs |
Типnumber | ОписаниеВремя чтения в миллисекундах |
Пример ответа
Таблица customers с первичным ключом id и тремя строками, запрос с limit=2:
{
"success": true,
"data": {
"file": "app.db",
"columns": [
"id",
"name",
"email",
"created_at"
],
"rows": [
[
1,
"Customer A",
"a@example.com",
"2026-10-20 08:12:46"
],
[
2,
"Customer B",
"b@example.com",
"2026-10-20 08:12:46"
]
],
"rowCount": 2,
"truncated": true,
"durationMs": 1.114,
"rowKeys": [
"eyJ2IjoxLCJhcHBJZCI6IjdjMmIxZjA4LTNhNGQtNGU5MS05YjZjLTJmNWU4YTFkMGMzMyIsImZpbGUiOiJhcHAuZGIiLCJ0YWJsZSI6ImN1c3RvbWVycyIsImtpbmQiOiJwayIsImNvbHVtbnMiOlsiaWQiXSwidmFsdWVzIjpbeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMSJ9XX0",
"eyJ2IjoxLCJhcHBJZCI6IjdjMmIxZjA4LTNhNGQtNGU5MS05YjZjLTJmNWU4YTFkMGMzMyIsImZpbGUiOiJhcHAuZGIiLCJ0YWJsZSI6ImN1c3RvbWVycyIsImtpbmQiOiJwayIsImNvbHVtbnMiOlsiaWQiXSwidmFsdWVzIjpbeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMiJ9XX0"
],
"table": "customers",
"limit": 2,
"offset": 0
}
}
Представление active_customers, запрос без параметров — строки представления правке по ключу не подлежат, поэтому в rowKeys приходит null:
{
"success": true,
"data": {
"file": "app.db",
"columns": [
"id",
"name"
],
"rows": [
[
1,
"Customer A"
],
[
2,
"Customer B"
]
],
"rowCount": 2,
"truncated": false,
"durationMs": 0.965,
"rowKeys": [
null,
null
],
"table": "active_customers",
"limit": 100,
"offset": 0
}
}
Пример ответа при ошибке
404 — таблицы с таким именем нет в базе:
{
"success": false,
"error": {
"code": "APP_DB_TABLE_NOT_FOUND",
"message": "Table or column not found"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | КодVALIDATION_ERROR |
ОписаниеПараметр вне допустимого диапазона, неизвестный параметр или неполный фильтр. Сообщение Invalid database read parameters |
| HTTP400 | КодVALIDATION_ERROR |
ОписаниеИмя таблицы в :table длиннее 256 байт. Сообщение Invalid table name |
| HTTP400 | КодAPP_DB_INVALID_FILE |
ОписаниеНекорректный путь в file: абсолютный, с выходом за пределы /data или через символическую ссылку |
| HTTP400 | КодAPP_DB_UNSUPPORTED_PLACEMENT |
ОписаниеПриложение размещено не в Галактике |
| HTTP401 | КодMISSING_API_KEY |
ОписаниеНе передан заголовок X-Api-Key |
| HTTP401 | КодINVALID_API_KEY |
ОписаниеКлюч не найден или недействителен |
| HTTP402 | КодBILLING_FROZEN |
ОписаниеХост галактики спит, и его нельзя разбудить: счёт аккаунта заморожен |
| HTTP403 | КодINFRA_SCOPE_REQUIRED |
ОписаниеУ ключа нет скоупа vibe:infra |
| HTTP403 | КодAPP_DB_DISABLED |
ОписаниеРабота с базой приложения не включена для портала |
| HTTP403 | КодSERVER_WAKE_BLOCKED |
ОписаниеХост галактики спит, и пробуждение для него запрещено |
| HTTP404 | КодNOT_FOUND |
ОписаниеПриложение не найдено, удалено или недоступно этому ключу |
| HTTP404 | КодAPP_DB_NOT_FOUND |
ОписаниеУ приложения нет тома /data или файла базы — приложение ещё не создало базу |
| HTTP404 | КодAPP_DB_TABLE_NOT_FOUND |
ОписаниеВ базе нет таблицы или представления :table, либо колонки из sort или filterColumn |
| HTTP409 | КодAPP_DB_BUSY |
ОписаниеХост занят другой операцией, ещё не проснулся или база занята записью приложения. Повторите после срока из заголовка Retry-After |
| HTTP409 | КодAPP_DB_WAL_CLOSED |
ОписаниеРаботающее приложение закрыло соединение с базой. Повтор без изменения приложения вернёт тот же отказ — см. Когда база доступна |
| HTTP414 | Код— | ОписаниеСтрока запроса длиннее предела сервера, ответ приходит HTML-страницей без JSON. Сократите filterValue |
| HTTP422 | КодAPP_DB_QUERY_TIMEOUT |
ОписаниеЧтение не уложилось в отведённое время |
| HTTP422 | КодAPP_DB_CORRUPT |
ОписаниеФайл базы повреждён. Восстановите базу из копии — Восстановить базу из копии |
| HTTP429 | КодRATE_LIMITED |
ОписаниеПревышен лимит запросов на чтение для портала — Лимиты. Пауза — в заголовке Retry-After |
| HTTP503 | КодAPP_DB_TOOL_UNAVAILABLE |
ОписаниеХост не подготовлен к чтению базы или временно недоступен. Повторите после срока из заголовка Retry-After. Готовность хоста — GET /app-db/prepare |
| HTTP503 | Кодuser_self_deletion_pending |
ОписаниеВладелец ключа удаляет свой аккаунт на этом портале |
Полный список общих ошибок API — Ошибки.