#Поиск бронирований
POST /v1/bookings/search
Возвращает бронирования за указанный диапазон дат. Начало и конец интервала обязательны. Подходит, когда параметры запроса удобнее передавать в теле, а не в строке запроса.
#Поля запроса (body)
Принимает две равнозначные формы. Используйте любую из них.
Форма 1 — параметры на верхнем уровне:
| Поле | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
dateFrom |
string | number | да | — | Начало интервала. ISO 8601 ("2026-05-01T00:00:00Z") или Unix-секунды (1714521600) |
dateTo |
string | number | да | — | Конец интервала. ISO 8601 или Unix-секунды |
limit |
number | нет | 50 |
Количество записей (от 1 до 5000) |
offset |
number | нет | 0 |
Смещение |
Форма 2 — параметры во вложенном фильтре:
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
filter.within.dateFrom |
string | number | да | Начало интервала |
filter.within.dateTo |
string | number | да | Конец интервала |
#Примеры
#curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/bookings/search" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dateFrom": "2024-01-01T00:00:00Z",
"dateTo": "2026-12-31T23:59:59Z",
"limit": 10
}'
#curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/bookings/search" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"dateFrom": "2024-01-01T00:00:00Z",
"dateTo": "2026-12-31T23:59:59Z",
"limit": 10
}'
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/bookings/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
dateFrom: '2024-01-01T00:00:00Z',
dateTo: '2026-12-31T23:59:59Z',
limit: 10,
}),
})
const { success, data, meta } = await res.json()
console.log(`Получено ${data.length} бронирований, hasMore: ${meta.hasMore}`)
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/bookings/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
dateFrom: '2024-01-01T00:00:00Z',
dateTo: '2026-12-31T23:59:59Z',
limit: 10,
}),
})
const { success, data, meta } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив бронирований (поля каждой записи — см. Бронирования) |
meta.total |
number | Всегда 0 — общее количество не вычисляется. Для определения наличия дополнительных записей используйте meta.hasMore |
meta.hasMore |
boolean | true, если количество записей, подходящих под условие, превышает limit |
#Пример ответа
{
"success": true,
"data": [
{
"datePeriod": {
"from": {
"timestamp": 1723446900,
"timezone": "Europe/Moscow"
},
"to": {
"timestamp": 1723447800,
"timezone": "Europe/Moscow"
}
},
"description": null,
"id": 3,
"name": null,
"resourceIds": [1, 3]
},
{
"datePeriod": {
"from": {
"timestamp": 1741687200,
"timezone": "Europe/Kaliningrad"
},
"to": {
"timestamp": 1741690800,
"timezone": "Europe/Kaliningrad"
}
},
"description": null,
"id": 1,
"name": "Запись",
"resourceIds": [1]
},
{
"datePeriod": {
"from": {
"timestamp": 1752570000,
"timezone": "Europe/Kaliningrad"
},
"to": {
"timestamp": 1752571800,
"timezone": "Europe/Kaliningrad"
}
},
"description": null,
"id": 5,
"name": null,
"resourceIds": [1]
}
],
"meta": {
"total": 0,
"hasMore": true
}
}
#Пример ответа при ошибке
400 — не переданы обязательные параметры:
{
"success": false,
"error": {
"code": "MISSING_REQUIRED_PARAMS",
"message": "POST /v1/bookings/search requires { dateFrom, dateTo } at the top level OR { filter: { within: { dateFrom, dateTo } } }. Values are ISO 8601 or Unix seconds."
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | MISSING_REQUIRED_PARAMS |
Не переданы dateFrom или dateTo ни в одной из допустимых форм |
| 400 | INVALID_DATE |
Значение dateFrom или dateTo не является ISO 8601 или Unix-секундами |
| 400 | INVALID_PARAMS |
limit меньше 1 или не является числом |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа booking |
| 401 | MISSING_API_KEY |
Заголовок X-Api-Key не передан |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.