Разработчикам / REST API для BOOCO Meteor (v 1.x) / Общее API
В данном разделе описываются методы для работы с бронированиями.
Endpoint | Метод | Описание | Queries | Body (JSON) | Значение поля data | Права (ресурс) | Версия |
---|---|---|---|---|---|---|---|
GET | Получить список бронирований из коллекции bookings. ВАЖНО: рекомендуется использовать | limitskip...query |
| read:any (booking) | |||
POST | Добавляет новую запись в коллекцию. ВАЖНО: при использовании этого эндпоинта не делаются проверки, поэтому рекомендуется использовать |
| create:any (booking) | ||||
GET | Получить бронирование из коллекции bookings по | key |
| read:any (booking) | |||
PUT | Обновить бронирование из коллекции bookings по | key |
|
| update:any (booking) | ||
DELETE | Удаляет бронирование из коллекции bookings с _id | key | delete:any (booking) | ||||
GET | Возвращает список бронирований из коллекции bookings, удовлетворяющие параметрам. ВАЖНО: В возвращаемый список не включаются удаленные бронирования (флаг removed) и события, у которых responseType - Tentative или Unknown | startendvenuevenueslimitskipsort...query |
| read:any (booking) | |||
GET | Возвращает все сегодняшние бронирования (и будущие, если указан параметр | limitskipdaysvenuevenuessort...query |
| read:any (booking) | |||
GET | Возвращает текущее (если есть) и будущие бронирования. Аналогично | venuevenuesdayslimitskipsort...query |
| read:any (booking) | |||
POST | Добавляет новое бронирование с проверкой правил бронирования (для избежания конфликтов и т.д.). Если указан duration (в миллисекундах), то используется он, а не end. При этом end определяется так, если следующее мероприятие раньше, чем start + duration, то end = nextStart. Если бронирование не удалось, то возвращается status: error. а причина указывается в message. Если установлен userId и не указа organizer, то берется email этого пользователя в качестве organizer. Возвращается _id нового события. |
|
| create:own (booking)create:any (booking)(см. замечание*) | 1.36.3 - изменено, время | ||
PUT | Обновить бронирование из коллекции bookings по |
| update:own (booking)update:any (booking)(см. замечание*) | ||||
GET | Завершает текущее бронирование | update:own (booking)update:any (booking)(см. замечание*) | |||||
GET | Для регистрации (чекина) в событии. Устанавливает поле confirmation у события на текущее время и дату. | reason | |||||
GET | Удаляет бронирование | delete:own (booking)delete:any (booking)(см. замечание*) | |||||
GET | DEPRECATED. Возвращает бронирование | read:own (booking)read:any (booking)(см. замечание*) | |||||
GET | Проверка прав для всех или выбранных ( | venueTypevenueIds |
| read:own (permission) | 1.36.3 | ||
GET | Проверка прав текущего пользователя может ли он выполнить действие |
| read:own (permission) | 1.36.3 | |||
GET | Проверка прав пользователя |
| read:any (permission) | 1.36.3 |
* При проверке прав, если email пользователя = полю organizer события, то используется право *:own
, иначе — *:any
.
Queries | Описание | Тип значения | Обязательный | Значение по умолчанию |
---|---|---|---|---|
Определяет по какому полю делается запрос. | string | нет | name | |
Начальная дата для поиска в коллекции bookings. Если задана, то к запросу добавляется условие | TDateISO | нет | ||
Конечная дата для поиска в коллекции bookings. Если задана, то к запросу добавляется условие | TDateISO | нет | ||
venueId помещения (не путать с _id). Если задан, то к запросу добавляется поиск по venues | string | нет | ||
Запрос в формате MongoDB для поиска помещений в коллекции venues. Например, | json | нет | ||
Количество дней вперед для эндпоинтов | number | нет | 1 | |
Можно указать дополнительные поля, которые будут указаны в формате запроса Mongo | нет | |||
Максимальное число записей в выдаче | number | нет | 1000 | |
Первая запись с которой начинать выдачу | number | нет | ||
Запрос на сортировку в формате JSON. Должен соответсвовать правилам Mongo | json | нет | ||
Тип помещения (meeting-room, desk, …) | string | нет | ||
Список id помещений (через запятую) | string | нет | ||
Произвольная строка, которая обычно описывает, кто инициировал действие | string | нет |
Используемые типы
type RepeatType = 'none' | 'daily' | 'weekly' | 'monthly' | 'workdays' | 'holidays' | 'weekdays';
type RepeatWeekdays = {
mondays?: boolean,
tuesdays?: boolean,
wednesdays?: boolean,
thursdays?: boolean,
fridays?: boolean,
saturdays?: boolean,
sundays?: boolean
};
type RepeatItem = {
type?: RepeatType,
id?: string,
start?: TDateISO,
end?: TDateISO,
weekdays?: RepeatWeekdays
}
type EventStatus = 'error' | 'Tentative' | 'Unknown' | 'Decline' | 'NoResponseReceived' | 'Accept';
type SyncItem = {
calendarSystemId: string,
calendarId?: string,
uniqueId?: string,
changeKey?: string,
status?: EventStatus,
reason?: string
};
type BookingEvent = {
_id?: string,
createdAt?: string,
venueId?: string,
venueType?: string,
venueName?: string,
location?: string,
start?: TDateISO,
end?: TDateISO,
subject?: string,
attendees?: Attendee[],
organizer?: string,
organizerEmail?: string,
organizerName?: string,
confirmation?: string,
userId?: string,
fixed?: boolean,
sync?: SyncItem[],
origin?: string,
repeat?: RepeatItem,
removed?: boolean,
vcsLocation?: string | null
};