API Документація
Get api token
var token = loginClient.getToken(companyLogin, apiKey);
var loginClient = new JSONRpcClient({
'url': 'https://user-api.simplybook.me/login',
'onerror': function (error) {
alert(error);
}
});
var token = loginClient.getToken('{companyLogin}', '{apiKey}');
Get event list
var events = client.getEventList();
var client = new JSONRpcClient({
'url': 'https://user-api.simplybook.me',
'headers': {
'X-Company-Login': '{companyLogin}',
'X-Token': '{token}'
},
'onerror': function (error) {
alert(error);
}
});
var services = client.getEventList();
Get performer list
var units = client.getUnitList();
var performers = client.getUnitList();
Filter performers by service
// fetch service and performers selects here
var serviceId;
var performerId;
jQuery('#select_event_id').empty();
jQuery('#select_unit_id').empty();
jQuery('#select_event_id').append('<option value=""></option>');
jQuery('#select_unit_id').append('<option value=""></option>');
for (var id in services) {
jQuery('#select_event_id').append('<option value="' + id + '">' + services[id].name + '</option>');
}
for (var id in performers) {
jQuery('#select_unit_id').append('<option value="' + id + '">' + performers[id].name + '</option>');
}
jQuery('#select_event_id').change(function () {
// service id
serviceId = jQuery(this).val();
var selectedService = services[serviceId];
// filter available performers
if (selectedService) {
if (typeof(selectedService.unit_map) != 'undefined' && selectedService.unit_map.length) {
jQuery('#select_unit_id option').attr('disabled', true);
jQuery('#select_unit_id option[value=""]').attr('disabled', false);
for (var i = 0; i < selectedService.unit_map.length; i++) {
jQuery('#select_unit_id option[value="' + selectedService.unit_map[i] + '"]').attr('disabled', false);
}
} else {
jQuery('#select_unit_id option').attr('disabled', false);
}
}
jQuery('#eventId').val(serviceId).change();
});
jQuery('#select_unit_id').change(function () {
performerId = jQuery(this).val();
});
Get closest day with available time slots
var firstWorkingDay = client.getFirstWorkingDay(performerId);
var firstWorkingDay = client.getFirstWorkingDay(performerId);
Disable not working time in calendar
workCalendar = client.getWorkCalendar(year, month, performerId);
// Init datepicker.
var workCalendar = {};
jQuery('#datepicker').datepicker({
'onChangeMonthYear': function (year, month, inst) {
workCalendar = client.getWorkCalendar(year, month, performerId);
jQuery('#datepicker').datepicker('refresh');
},
'beforeShowDay': function (date) {
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
var date = year + '-' + month + '-' + day;
if (typeof(workCalendar[date]) != 'undefined') {
if (parseInt(workCalendar[date].is_day_off) == 1) {
return [false, "", ""];
}
}
return [true, "", ""];
}
});
var firstWorkingDateArr = firstWorkingDay.split('-');
workCalendar = client.getWorkCalendar(firstWorkingDateArr[0], firstWorkingDateArr[1], performerId);
jQuery('#datepicker').datepicker('refresh');
Get available time slots
var startMatrix = client.getStartTimeMatrix(from, to, eventId, unitId, count)
// Handle date selection
var count = 1; // How many slots book
function formatDate(date) {
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
return year + '-' + month + '-' + day;
}
function drawMatrix(matrix) {
jQuery('#starttime').empty();
for (var i = 0; i < matrix.length; i++) {
jQuery('#starttime').append('<span data-time="' + matrix[i] + '">' + matrix[i] + '</span>');
}
jQuery('#starttime span').click(function () {
startTime = jQuery(this).data('time');
jQuery('#starttime span').removeClass('selected');
jQuery(this).addClass('selected');
});
}
jQuery('#datepicker').datepicker('option', 'onSelect', function () {
var startDate = formatDate(jQuery(this).datepicker('getDate'));
jQuery('#dateFrom, #dateTo').val(startDate);
var startMatrix = client.getStartTimeMatrix(startDate, startDate, serviceId, performerId, count);
drawMatrix(startMatrix[startDate]);
});
var startMatrix = client.getStartTimeMatrix(firstWorkingDay, firstWorkingDay, serviceId, performerId, count);
drawMatrix(startMatrix[firstWorkingDay]);
Check if additional fields plugin is activated
var additionalFieldsActivated = client.isPluginActivated('event_field');
var additionalFieldsActivated = client.isPluginActivated('event_field');
Get additional fields
// load additional fields
var additionalFields = [];
function clearAdditionalFields() {
jQuery('#additional-fields').empty();
additionalFields = [];
}
function addAdditionalField(field) {
var container = jQuery('<div class="form-group"></div>');
var title = jQuery('<div class="control-label">' + field.title + '</div>');
container.append(title);
var fieldContainer = jQuery('<div class="field"></div>');
container.append(fieldContainer);
var fieldNode = null;
switch (field.type) {
case 'checkbox':
fieldNode = jQuery('<input type="checkbox" name="' + field.name + '" id="' + field.name + '" value="1" />');
if (field['default']) {
fieldNode.attr('checked', true);
}
break;
case 'select':
fieldNode = jQuery('<select class="select select2" name="' + field.name + '" id="' + field.name + '"></select>');
var values = field.values.split(',');
for (var k = 0; k < values.length; k++) {
fieldNode.append(jQuery('<option value="' + values[k].trim() + '">' + values[k].trim() + '</option>'));
}
if (field['default']) {
fieldNode.val(field['default']);
}
break;
case 'textarea':
fieldNode = jQuery('<textarea name="' + field.name + '" id="' + field.name + '"></textarea>');
if (field['default']) {
fieldNode.val(field['default']);
}
break;
default:
fieldNode = jQuery('<input type="text" name="' + field.name + '" id="' + field.name + '" />');
if (field['default']) {
fieldNode.val(field['default']);
}
break;
}
if (fieldNode) {
if (field.type == 'checkbox') {
fieldNode.addClass('checkbox');
} else {
fieldNode.addClass('form-control');
}
fieldContainer.append(fieldNode);
jQuery('#additional-fields').append(container);
}
}
if (additionalFieldsActivated) {
clearAdditionalFields();
additionalFields = client.getAdditionalFields(serviceId);
for (var i = 0; i < additionalFields.length; i++) {
addAdditionalField(additionalFields[i]);
}
}
Perform booking
// Collect client data
var clientData = {
'name': jQuery('#clientName').val(),
'email': jQuery('#clientEmail').val(),
'phone': jQuery('#clientPhone').val()
};
// Collect additional fields
var additionalFieldValues = {};
jQuery('#additional-fields input, #additional-fields select, #additional-fields textarea').each(function () {
var val = '';
if (jQuery(this).attr('type') == 'checkbox') {
if (jQuery(this).is(':checked')) {
val = 1;
} else {
val = 0;
}
} else {
val = jQuery(this).val();
}
additionalFieldValues[jQuery(this).attr('name')] = val;
});
var count = 1;
var result = client.book(serviceId, performerId, startDate, startTime, clientData, additionalFieldValues, count);
Summary
Thank you for reading!
Використовуйте наш API для розробників, щоб створити власний інтерфейс для бронювання. Ви можете розробити будь-яке рішення, відповідно до вимог Вашого бізнесу, від найпростішого віджета до багатофункціонального додатку з різноманітними можливостями.
Прикладний програмний інтерфейс (API) використовує JSON-RPC 2.0 протокол.
Перегляньте приклад інтерфейсу для бронювань створеного за допомогою API, а також ознайомтесь із вихідним кодом для цього рішення.
Авторизація
Методи API Simplybook вимагають авторизації. Для авторизації в API Simplybook Вам необхідно отримати ключ доступу — токен доступу. Щоб отримати токен доступу Вам необхідно викликати метод JSON-RPC getToken у сервісу http://user-api.simplybook.me/login передаючи туди Ваш особистий API-ключ. Ви можете скопіювати API-ключ в інтерфейсі адміністратора: перейдіть до 'Додаткових функцій', оберіть додаткову функцію API та перейдіть в інтерфейс її 'Налаштування'. Після цього необхідно ініціювати віддалений доступ до API Simplybook. Запит повинен містити наступні заголовки: 'X-Company-Login', 'X-Token'.
Отримання токену доступу може здійснюватись зі сторони клієнта або з Вашого серверу, що є більш безпечним варіантом.
Ви можете використовувати javascript JSON-RPC-клієнтську бібліотеку та php JSON-RPC-клієнтську бібліотеку з наших прикладів для Вашої власної розробки.
Авторизація в Client API (Company public service)
Авторизація зі сторони клієнтського коду
Одержання токену-ключа.
var loginClient = new JSONRpcClient({
'url': 'https://user-api.simplybook.me' + '/login',
'onerror': function (error) {},
});
var token = loginClient.getToken( YOUR_COMPANY_LOGIN, YOUR_API_KEY);
Ініціалізація JSON-RPC-клієнта
this.client = new JSONRpcClient({
'url': 'https://user-api.simplybook.me',
'headers': {
'X-Company-Login': YOUR_COMPANY_LOGIN,
'X-Token': token
},
'onerror': function (error) {}
});
Авторизація зі сторони серверного коду
Одержання токену-ключа.
$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
$token = $loginClient->getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);
Ініціалізація JSON-RPC-клієнта.
$client = new JsonRpcClient( 'https://user-api.simplybook.me' . '/', array(
'headers' => array(
'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
'X-Token: ' . $token
)
));
Авторизаця API Користувача/Адміністратора (Адміністративні сервіси компанії)
Авторизація зі сторони клієнтського коду
Одержання токену-ключа.
var loginClient = new JSONRpcClient({
'url': {$api_url} + '/login',
'onerror': function (error) {},
});
var token = loginClient.getUserToken( YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);
Ініціалізація JSON-RPC-клієнта.
this.client = new JSONRpcClient({
'url': 'https://user-api.simplybook.me' + '/admin/',
'headers': {
'X-Company-Login': YOUR_COMPANY_LOGIN,
'X-User-Token': token
},
'onerror': function (error) {}
});
Авторизація зі сторони серверного коду
Одержання токену-ключа.
$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
$token = $loginClient->getUserToken({YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);
Ініціалізація JSON-RPC-клієнта.
$client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
'headers' => array(
'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
'X-User-Token: ' . $token
)
));
Отримання даних з серверу Simplybook
Зазвичай сторінка бронювання - це сторінка, на якій клієнти обирають необхідну їм послугу, працівника та час їх зустрічі. Потім клієнт вводить певну контактну інформацію та підтверджує бронювання. Більш складні рішення можуть включати заповнення різних додаткових полів, групові або багаторазові бронювання тощо. Давайте опишемо робочий процес створення найпростішої сторінки бронювання. А якщо вам будуть потрібні додаткові функції на Вашій сторінці, дивіться повний список методів API Simplybook.
Отже, перше, що Вам необхідно відобразити, - це перелік послуг та список працівників. Отримайте ці дані методами getEventList та getUnitList . Вони відображають список із повною інформацією про кожен елемент у ньому, тож у Вас є безліч можливостей відображення послуг та працівників на Вашій сторінці. Щоб зробити фільтрацію працівників, використовуйте властивість unit_map у списку послуг, вона містить інформацію про працівників, які можуть надавати обрану послугу.
Зразок коду для отримання списку послуг
$services = $client->getEventList();
// returns array(array(
// 'id' => 1, - service id
// 'name' => 'Service 1', - service's name
// 'description' => 'Describe your service...', - service description
// 'duration' => 60, - service duration
// 'hide_duration' => 0, - Hide duration to clients flag,
// 'picture' => null, - file name of picture or null
// 'picture_path' => '/uploads/apidemo/event__picture/small/', - full path to picture,
// 'position' => 1 - service position
// 'is_active' => 1, - the service is activated
// 'is_public' => 1, - the service is allowed to book by clients
// ), ...)
Зразок коду для отримання списку працівників
$services = $client->getUnitList();
// returns array(array(
// 'id' => 1, - performer id
// 'name' => 'Provider 1', - performer name
// 'phone' => '111111111', - perfomer phone number
// 'description' => 'Describe your performer...', - performer description
// 'email' => 'test@gmail.com', - perfomer email,
// 'is_active' => 1, - the performer is activated
// 'is_visible' => 1, - the perfomer is visible for clients,
// 'picture' => null, - file name of picture or null,
// 'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - full path to picture
// 'position' => 1, - performer position
// 'qty' => 1, performer quantity
// ), ...)
Наступним кроком для клієнта є вибір дати та часу його обслуговування. У прикладі використання API ми використали інструмент вибору дати Bootstrap, Ви також можете використовувати цей або будь-який інший календар. Для встановлення першої дати календаря використовуйте метод getFirstWorkingDay . Він може використати ідентифікатор працівника як параметр і відображає наступну дату, коли вибраний працівник (або будь-який працівник компанії за замовчуванням) доступний для бронювання.{""|t} Для відображення часових інтервалів для обраної дати Вам необхідні методи getWorkCalendar та getStartTimeMatrix. Перший метод надає інформацію про час початку та закінчення робочого дня та про вихідні дні. А другий відображає список часових інтервалів, які можна забронювати на певну дату.
Зразок коду для отримання інформаії про робочі дні
$year = 2020;
$month = 3; // March
$performerId = 1; // Can be null
$workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
// returns array(
// '2020-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
// '2020-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
// ...
//);
Зразок коду для отримання матриці часу початку послуги
$dateFrom = '2020-03-03';
$dateTo = '2020-03-04';
$serviceId = 1;
$performerId = 1;
$qty = 1;
$availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
// returns array(
// '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
// '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
//);
Ще один корисний метод, який Вам може знадобитися - це calculateEndTime. Кожна послуга може мати свою тривалість, також працівники Вашої компанії можуть мати різний графік роботи в різні дні. Використовуючи цей метод, Ви можете вказати клієнту дату та час закінчення заброньованої послуги.
Зразок коду розрахунку часу закінчення бронювання
$startDateTime = '2020-03-03 09:00:00';
$serviceId = 1;
$performerId = 1;
$availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
// returns '2020-03-03 10:00:00'
Коли клієнт натискає кнопку підтвердження бронювання, Вам потрібно викликати метод book. Це основна функція, яка виконує всі необхідні перевірки та реєструє нове бронювання в системі Simplybook. Тут потрібна інформація про бронювання, дані клієнта, такі як ім’я та телефон, а також додаткові параметри. Дивіться всі описи параметрів цього методу в списку функцій API . Відповідь методу book містить унікальний код та інші подробиці нового бронювання або список помилок, якщо такі виникли, тому Ви можете використовувати цю інформацію для відображення результату бронювання клієнта у зручний та зрозумілий спосіб
Використання секретного ключа API
У деяких випадках метод book може вимагати підтвердження, наприклад якщо Ви приймаєте платежі від клієнтів, то бронювання підтверджується лише пілся того, як платіж було одержано. Метод API Simplybook confirmBookng приймає booking-id і безпечний підпис як параметри (інший метод, що вимагає захищеного підпису - це cancelBookng). Для створення безпечного підпису слід використовувати ваш секретний API-ключ. Подивіться, як це можна зробити на прикладі нижче. Ви можете скопіювати секретний ключ в інтерфейсі адміністратора: перейдіть до 'Додаткових функцій', оберіть додаткову функцію API та перейдіть в інтерфейс її 'Налаштування'.
Зразок коду бронювання послуги і підтвердження використовуючи секретний ключ API
$additionalFields = array(
'6740d3bce747107ddb9a789cbb78abf3' => 'value1',
'b0657bafaec7a2c9800b923f959f8163' => 'value2'
);
$clientData = array(
'name' => 'Client name',
'email' => 'client@email.com',
'phone' => '+13152108338'
);
$bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
if ($bookingsInfo->require_confirm) {
foreach ($bookingsInfo->bookings as $booking) {
$sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
$result = $client->confirmBooking($booking->id, $sign);
echo '<br>Confirm result</b><br />';
var_dump($result);
}
}
Зразок коду для отримання додаткових полів
$fields = $client->getAdditionalFields($eventId);
// returns - array(array(
// 'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
// 'title' => 'Test digits', - field title
// 'type' => 'digits', - field type
// 'values' => null, - available values for select field type
// 'default' => null, - default value for field
// 'is_null' => null, - is filed nullable
// 'on_main_page' => 1,
// 'pos' => 1, - field position
// 'value' => null
// )), ...)
Додаткові функції Simplybook
Якщо Ваша компанія потребує додаткового функціоналу, Ви можете активувати деякі додаткові функції. Повний список функцій з детальним описом доступний у Вашому адміністраторському інтерфейсі за посиланням 'Додаткові функції'. Після активації необхідної фукції також будуть активовані відповідні методи API, щоб ви могли використовувати їх у своєму коді.
Потік коду функціоналу бронювання
Авторизація в API Simplybook за допомогою функції loginClient.getToken(companyLogin, apiKey);.
Перевірте чи додаткова функція Категорії послуг увімкнена за допомогою isPluginActivated('event_category') якщо так, тоді відобразіть список категорій getCategoriesList().
Отримайте список послуг (подій) та працівників (одиниць) за допомогою функційgetEventList() та getUnitList(). Якщо для послуги доступний масив 'unit_map', це означає, що цю послугу можуть надавати лише вказані працівники.
Якщо увімкнена додаткова функція Обрати будь-якого працівникаisPluginActivated('any_unit') і не встановлено спеціальної тривалості для комбінації послуга - працівник в масиві 'unit_map', тоді користувачеві слід дозволити вибрати опцію Будь-який працівник або вибрати постачальника вручну. Але вручну вибір виконавців не повинен бути можливим, якщо увімкнено getCompanyParam('any_unit__hide_other_units').
Використовуйте getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) щоб отримати доступні часові інтервали для вказаної дати. $unitId має бути пустим, якщо вибрано опцію Будь-який працівник.
Якщо увімкнена функція Обрати будь-якого працівника і обрали опцію Будь-який працівник викликайте getAvailableUnits($eventId, $dateTime, $count), щоб отримати доступні $unitId
Якщо функція Додаткові питання умімкнена isPluginActivated('event_field') викликати функцію getAdditionalFields($eventId), щоб отримати список полів для заповнення клієнтом.
Викликати book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId), щоб забронювати.
Посилання на сервіс https://user-api.simplybook.me/login
-
getServiceUrl ($companyLogin)
Returns API url for given company login
-
getToken ($companyLogin, $apiKey)
Returns an application's token string for a company. You should use this token to authenticate all calls of
[[Company public service methods|Company public service API methods]] and [[Catalogue|Catalogue API methods]]. Toget application API key you need to enable [[Plugins#API|API plugin]].
-
getUserToken ($companyLogin, $userLogin, $userPassword)
Returns an authentication token string for certain user registered for company. You should use this token to
authenticate all calls of [[Company administration service methods|Company administration service API methods]] and[[Catalogue|Catalogue API methods]].
-
getApplicationToken ($applicationApiKey)
Returns an application's token string for an application. You should use this token to authenticate all calls of
[[Company public service methods|Company public service API methods]] and [[Catalogue|Catalogue API methods]]. Toget application API key please contact SimplyBook.me support team.
Посилання на сервіс https://user-api.simplybook.me/
-
getUnitList ($isVisibleOnly, $asArray, $handleClasses, $searchString)
{@inheritdoc}
-
getEventList ($isVisibleOnly, $asArray, $handleClasses, $searchString)
{@inheritdoc}
-
getCategoriesList ($isPublic)
{@inheritdoc}
-
getLocationsList ($isPublic)
{@inheritdoc}
-
getPaymentProcessorConfig ($paymentProcessor)
Returns payment processor config
-
validatePayment ($paymentInfo, $cartId)
Validate application payment.
-
getBookingCart ($bookingIds)
Returns cart information by bookings ids.
cart_id
andcart_hash
is used to create secure signature to confirm cart payment.status
- current cart status
amount
- is total amount to payment
currency
- cart currency
cart
- contains cart items. You can use them to provide information for payment system. Each item is object with following fields:
id
- booking id
event_id
- service id
name
- event name + start date time (use it to provide cart information for payment system)
price
- booking price
qty
- qty of bookings -
getBookingCartInfo ($cartId, $sign)
Returns current cart information
cart_id
andcart_hash
is used to create secure signature to confirm cart payment.amount
- is total amount to payment
currency
- cart currency
cart
- contains cart items. You can use them to provide information for payment system. Each item is object with following fields:
id
- booking id
event_id
- service id
name
- event name + start date time (use it to provide cart information for payment system)
price
- booking price
qty
- qty of bookings -
getBookingCartStatus ($id)
Returns current cart status
Possible result values:cancel
- user has canceled payment
paid
- user has paid
error
- error has been occurred on validation payment
not_paid
- cart is not paid yet or payment status is pending -
confirmBookingCart ($cartId, $paymentProcessor, $sign)
Confirm booking cart. Use it to confirm payment. Signature is required.
-
confirmBooking ($id, $sign)
Confirm booking. Signature is required.
$sign = md5($bookingId . $bookingHash . $secretKey);Call this method from server side only
-
confirmBookingPayment ($id, $paymentProcessor, $sign)
Confirm booking payment. Signature is required.
$sign = md5($bookingId . $bookingHash . $secretKey);Call this method from server side only
-
confirmBookingBatch ($batchId, $batchType, $sign)
Confirms booking batch. Signature is required.
$sign = md5($batchId . $batchHash . $secret)Call this method from server side only
-
getBooking ($id, $sign)
Returns an object with details information about booking.
$sign
parameter must be a string created
with formula:md5($bookingId . $bookingHash . $secretKey)
. You can get$bookingHash
value as result of
[[#book|book]]
API method call. Method return an error with code -32080
(Appointment couldn't be found) if record with specified id not exists. Methods returns an error with code -32085
(Signature error) if$sign
parameter is wrong. -
getBookingDetails ($id, $sign)
Returns an object with details information about booking.
$sign
parameter must be a string created
with formula:md5($bookingId . $bookingHash . $secretKey)
. You can get$bookingHash
value as result of
[[#book|book]]
API method call. Method return an error with code -32080
(Appointment couldn't be found) if record with specified id not exists. Methods returns an error with code -32085
(Signature error) if$sign
parameter is wrong. -
isPaymentRequired ($eventId)
Returns true if [[Plugins#Accept_payments|Accept payments]] plugin activated and event with specified id has
configured price. If no paramentes specified then method returns true if payments plugin activated and at leastone event has configured price. Otherwise returns false.
-
book ($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId, $recurringData)
Creates new booking record. Returns an object with appointment information or throw exception if booking time not
available or any of required parameters missed. If appointment requires confirmation, in result object will berequire_confirm = true
.$startDate
and$startTime
specifies a date of
booking and time slot. Time value should be multiple to 'timeframe' configuration of company (see
[[#getTimeframe|getTimeframe]]
API method).$endDate
and$endTime
parameters
should be calculated according to service duration. However you can specify different values to make appointment
longer or shorter then service configuration. Note that$endDate
and$endTime
should be
later in time than$startDate
and$startTime
. If your clients located in different time
zone you should specify'client_time_offset'
value in$clientData
object as difference
between client's time zone and company's time zone in minutes. For example if company located in city with time
zone GMT+2 and customer located in city with GMT+3 then$clientTimeOffset
will be 60 minutes. You
can get information about company's time zone using[[#getCompanyInfo|getCompanyInfo]]
API method. To
create batch booking you can specify eithercount
more then 1 or validbatchId
(only one
parameter can be specified). You should specify an$additionalFields
parameter if service requires
some additional fields (see [[Plugins#Additional fields|Additional fields plugin]]). To create a booking with promo code you
should pass it as additional field. For example:{"name": "promocode", "value": "some code", "type": "text"}
See [[#book response|example]] ofbook
API method response. -
getRecurringDatetimes ($eventId, $unitId, $date, $time, $recurringData, $productIds)
Get list of dates for recurring booking
-
hasUpcommingPromotions ()
Returns availability of active promotions
-
validatePromoCode ($code, $startDateTime, $eventId, $count, $clientData)
Validate promotion code.
Returns true in case promocode is valid otherwise throws exception with error. -
getPromocodeInfo ($code)
Returns an object with detailed information about promotion by promotion code. Returns null if no promotions with
specified code were not found. -
getPromotionRewardInfo ($commonPromotionId, $clientId, $hash)
Returns promotion reward by common promotion id, client id and hash.
-
getUserLicenseText ()
Returns user license text if user license plugin is turned on,
otherwise throws exception -
getPrivacyPolicyText ()
Returns user privacy policy text if user license plugin is turned on and privacy policy is enabled,
otherwise throws exception -
getClientInfo ($clientId, $sign)
Returns client info by client id
-
getClientInfoByLoginPassword ($login, $password)
Returns client information by clients login (email)/password
-
remindClientPassword ($email)
Sends remind email for client
-
getClientByLoginHash ($hash)
Get client information by client login hash
-
modifyClientInfo ($clientId, $data, $sign)
Edit client information data
-
getMembershipList ()
Returns list of available memberships
-
getClientMembershipList ($filter, $clientId, $sign)
Returns purchased membership list
-
getClientBookings ($clientId, $sign, $filter)
Returns client bookings, accepts $filter ($filter {upcoming_only: true/false, confirmed_only: true/false})
-
getProductList ($filter)
Returns product list with filter.
At this time filter can accept only service_id parameter -
getClassesList ($filter)
Returns company's classes list. Ordered by position
-
rescheduleBook ($shedulerId, $sign, $startDate, $startTime, $endDate, $endTime, $additional, $clientTimeOffset, $clientTimezone)
Edit existing booking record. See [[#book|book]] API method description for more details about date/time parameters,
time zone handling and additional fields. Returns null if parameters not valid. -
getCompanyParam ($key)
Returns company config value for key. A different set of keys available for public API and for company
administration API. Method return 'invalid params' error (code -32602) in case if access to specified key notallowed. See [[#Company_params|list of available keys]].
-
getCompanyParams ($keys)
Returns company's config values for specified keys as key-value map. For non-existent and not-allowed param keys
it will return '''false''' as result. A different set of keys available for public API and for companyadministration API. See [[#Company_params|list of available keys]].
-
getCancellationPolicy ()
Returns cancellation policy rules.
If cancellation policy custom feature is not activated, method returns null. -
getTimelineType ()
Returns company timeline type
-
calculateEndTime ($startDateTime, $eventId, $unitId, $productIds)
Returns end datetime if booking is available, else return false
-
getWorkCalendar ($year, $month, $data)
Returns company work schedule as array
Eg.:{'2014-05-01': {'from': '09:00:00', 'to': '21:00:00', 'is_day_off': '0'}, '2014-05-02': ...}
-
getReservedTime ($from, $to, $eventId, $unitId, $count)
Returns map of objects for each day in specified date range. The key of the result mps is a date string. The value
is an array of two objects. Both objects contains list of time slots for typereserved_time
and typenot_worked_time
.reserved_time
type represents time slots working time but already booked
by clients. Nobody knows what kind of data represented bynot_worked_time
type. Please don't use it.
If [[Plugins#Google calendar sync plugin|Google calendar sync plugin]] enabled then object with
reserved_time
type will contain not empty list of time slots marked as busy in Google calendar. Call
[[#isPluginActivated|isPluginActivated('google_calendar_export')]]
API method to check if Google
calendar sync plugin activated.
Example:
{
"2016-02-05": [
{
"dd": [], // time slots from Google calendar
"events": [ // reserved time slots
{ "from": "16:00", "to": "16:30" },
{ "from": "16:30", "to": "17:00" },
... ],
"type": "reserved_time",
},
{
"events": [
{ "from": "09:00", "to": "09:30" },
{ "from": "09:30", "to": "10:00" },
... ],
"type": "not_worked_time"
}],
...
}
-
getWorkDaysInfo ($from, $to, $unitId, $eventId, $count, $productIds)
Returns an information about working hours and break times for specified service and performer for a period
between two dates. If only service specified then information about performer (or performers) will be taken fromservice configuration. Method returns a list of objects for each date in specified period. Count of objects in
list depends on break times. For example if performer works from 9:00 till 19:00 with one hour break at 13:00 method
returns:
{'2014-05-14' : [
{'from': '09:00:00', 'to': '13:00:00'},
{'from': '14:00:00', 'to': '19:00:00'}
] }
Warning! Method can return a time string '24:00:00' as right edge of time range. This happens in case if time
range finishes on midnight. -
getFirstWorkingDay ($data)
Returns first working date for unit
-
getStartTimeMatrix ($from, $to, $eventId, $unitId, $count, $bookingId, $productIds)
Returns available start time, taking into account breaktimes, start and end working time
Eg.:{'2014-05-14': ['09:00:00', ...], ...}
If locations plugin activated for company you should pass a list as $unitID parameter for filter results with
units available only for selected location. See [[Plugins#Unit_location|Unit location]] plugin description for
more details. -
getCartesianStartTimeMatrix ($from, $to, $eventId, $unitId, $count, $bookingId, $productIds)
Returns available start time, taking into account breaktimes, start and end working time.
The difference between getStartTimeMatrix and getCartesianStartTimeMatrix is that getCartesianStartTimeMatrixprovides time slots for each individual provider.
Eg.:{"provider_id": 1, "service_id": 1, "timeslots": {"2014-05-14": ['09:00:00', ...], ...}, ...}
If locations plugin activated for company you should pass a list as $unitID parameter for filter results with
units available only for selected location. See [[Plugins#Unit_location|Unit location]] plugin description for
more details. -
getAvailableTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count)
Returns available time intervals for all service providers for given period, taking into account breaktimes, start and end working time
Eg.:{['2016-03-04': ['1': [['09:00:00','09:30:00'], ['11:15:00','14:45:00']] , ...], ...]}
-
getServiceAvailableTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count)
Returns available time intervals for all servics for given period, taking into account breaktimes, start and end working time
Eg.:{['2016-03-04': ['1': [['09:00:00','09:30:00'], ['11:15:00','14:45:00']] , ...], ...]}
-
getReservedTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count, $bookingId)
Returns not available time
Eg.:{'2014-05-14': [{'reserved_time': [{'from': '14:00', 'to': '16:30'}], 'type': "reserved_time"}, ...], ...}
-
getAvailableUnits ($eventId, $dateTime, $count, $unitId, $productIds)
Returns list of available unit ids for specified date and service or empty array if all units are not allowed.
Eg.:[1, 2, 3]
-
getAnyUnitData ()
Returns information about [[Plugins#Any_Employee_selector|Any Employee selector plugin]] configuration. Returns
null if plugin not enabled.
Example:
{
"description" : "Select this option, if you want to find an available time with any of the employees",
"hide_other_units" : 1, // 1 or 0
"image" : null,
"name" : "Any employee",
"picture_path" : null,
"random_selection" : 0 // 1 or 0
} -
getAdditionalFields ($eventId)
Return additional fields for certain event if [[Plugins#Additional_fields|Additional fields plugin]] is
activated. Returns empty array otherwise. Call[[#isPluginActivated|isPluginActivated('event_field')]]
API method to check if 'event_field' plugin activated.
-
getTimeframe ()
Returns company's timeframe configuration (in minutes). Timeframe can be either 5, 10, 15, 20, 30 or 60 minutes.
You can find more details about timeframe [[Settings#Timeframe|here]]. -
isPluginActivated ($pluginName)
Return plugin status true if status active, else false. $pluginName parameter is a plugin identifier.
See [[Plugins|plugins]] page for full plugins description. See [[#Plugin's identifiers|list of available plugin's names]]. -
getPluginStatuses ($pluginNames)
Return plugin status true if status active, else false. See [[#Plugin's identifiers|list of available plugin's names]].
-
getCompanyInfo ()
Returns an object with detailed information about company. See [[#getCompanyInfo response|example of response]].
-
createBatch ()
Creates new booking batch record. Returns newly created batch id. You can use this id in
[[#book|book]]
API method. -
getCountryPhoneCodes ()
Returns country phone code list
-
getPluginPromoInfoByCode ()
Returns an object with detailed information about promotion by promotion code. You can get promotion code
using[[Catalogue#getPromotionList|getPromotionList]]
API method. If promotion record with specifiedcode not found then method returns an empty array (an empty object). If [[Plugins#Simply Smart Promotions|Simply Smart Promotions plugin]]
not enabled then method returns an error with code -32001 (Plugin is not activated). Use
[[#isPluginActivated|isPluginActivated('promo')]]
API method call to check if plugin enabled.
See [[#getPromotionList response|example]] ofgetPromotionList
API method response. Please note that
response contains a list of services for wich promotion discount can be applied (service_ids
key). -
getCompanyTimezoneOffset ()
Returns company timezone offset and company timezone
Посилання на сервіс https://user-api.simplybook.me/admin
-
getUserPhoneValidationInfo ($userId, $number)
Get user db data (id, phone, is_validated)
-
saveConfigKeys ($data, $module, $plugin)
Save configuration keys
-
getNotificationConfigStructure ($plugin)
Get structure of SMS and Email notification config params
-
getBookings ()
Returns list of bookings filtered by given params. Filter params represented as object with following fields:
* '''date_from''' a date of booking in string format 'Y-m-d'
* '''time_from''' a time string in format 'H:i:s'
* '''date_to''' a date string in format 'Y-m-d'
* '''time_to''' a time string in format 'H:i:s'
* '''created_date_from''' a date string in format 'Y-m-d'
* '''created_date_to''' a date string in format 'Y-m-d'
* '''edited_date_from''' a date string in format 'Y-m-d'
* '''edited_date_to''' a date string in format 'Y-m-d'
* '''unit_group_id''' an integer. Use it to get bookings assigned for certain service provider.
* '''event_id''' an integer. Use it to get bookings only for certain service.
* '''is_confirmed''' 1 or 0. If [[Plugins#Approve booking|Approve booking]] plugin enabled then method will return confirmed bookings with approve status 'new'.
* '''client_id''' an integer. Use it to get bookings only for certain client.
* '''order''' string either 'record_date', 'date_start' or 'date_start_asc'. By default used 'date_start' value.
* '''booking_type''' a string. Value of this field depends on Approve booking plugin status.
* '''code''' booking code
*: If plugin not active:
** '''all''' for all bookings (default value)
** '''cancelled''' alias to 'is_confirmed' equal to 0
** '''non_cancelled''' alias to 'is_confirmed' equal to 1
*: If plugin active:
** '''all''' for all bookings (default value)
** '''cancelled''' returns bookings with 'is_confirmed' field equals to 0 and approve booking status equals to 'cancelled' (or booking does not have any approve status)
** '''non_cancelled''' returns bookings with either 'is_confirmed' field equals to 1 or approve booking status equals to 'new'
** '''cancelled_by_client''' returns bookings approved by admin but cancelled by client
** '''cancelled_by_admin''' returns bookings cancelled by admin
** '''non_approved_yet''' returns bookings with approve status 'new'
** '''approved''' returns bookings with either 'is_confirmed' field equals to 1 and approve booking status equals to 'approved' (or booking does not have any approve status)
Example:
{
"date_from":"2015-12-29",
"date_to":"2015-12-29",
"booking_type":"cancelled",
"event_id":"5",
"order":"start_date"
} -
pluginZapierSubscribe ($url, $notificationType)
'create', 'cancel', 'new_client', 'change', 'create_invoice'
-
getBookingDetailsZapierMock ()
-
getClientInfo ($clientId)
Returns client data
-
getClientInfoZapier ($clientId)
Returns client data
-
getClientInfoZapierMock ()
Returns client data
-
getBookingsZapier ()
Returns list of bookings filtered by given params
-
getInvoiceDetailsMock ()
-
getBookingDetails ($id)
Returns detailed bookings object by booking id. See [[#getBookingDetails_response|response example]].
-
getWorkDaysTimes ($startDateTime, $endDateTime, $type)
Return busy time by unit id by GoogleCalendar plugin if enabled.
Please note that this method may return not actual data because data synchronization between server andGoogle Calendar may take some time and synchronized data are cached for 15 minutes.
-
getGoogleCalendarBusyTime ($startDateTime, $endDateTime, $unitId)
Returns a list of objects represented a time intervals marked as busy in Google Calendar. Each object of result
containsfrom
andto
properties with datetime string as value. This method only actual if[Plugins#Google calendar sync plugin|Google calendar sync plugin] enabled. If plugin not enabled an empty list will
be returned. You should call[[#isPluginActivated|isPluginActivated('google_calendar_export')]]
to
check status of the plugin. Each object of result containsfrom
andto
properties with
datetime string as value. Please note that this method may return not actual data because data synchronization
between server and Google Calendar may take some time and synchronized data are cached for 15 minutes.
Example:
[
{"from" : "2016-02-16 13:30:00",
"to" : "2016-02-16 16:00:00"},
...
]
-
getGoogleCalendarBusyTimeAvailableUnits ()
Returns configured unit ids, allowed to sync busy time
-
getBookingLimitUnavailableTimeInterval ($startDateTime, $endDateTime, $eventId)
Returns time intervals not available for bookings because of configuration of [[Plugins#Limit bookings|Limit bookings]]
plugin for period of time. Returns empty array if plugin not available. -
getUnitWorkingDurations ($dateStart, $dateEnd, $unitGroupId)
Return working durations
-
getWorkload ($dateStart, $dateEnd, $unitGroupId)
Return workload data for units in period of time. Workload for each unit represented as array with work hours
at index 0, confirmed booking hours as load at index 1 and cancelled bookings hours at index 2.
Example:
['2015-10-21' : {
5 : [
10, // working hours
10, // load hours (confirmed bookings hours)
0 // cancelled bookings hours
] }] -
getBookingRevenue ($dateStart, $dateEnd, $unitGroupId, $serviceId)
Return bookings count and revenue value for each date in specified period. Data grouped by unit id and
represented as array with bookings count at index 0 and revenue amount at index 1. You can filter data eitherby unit or by service. Set
$dateStart
and$dateEnd
to null to get data for current week.
Example:
['2015-11-12' : {
3 : [
11, // bookings count
128.53 // revenue
]} -
getUnitWorkdayInfo ($dateStart, $dateEnd, $unitGroupId)
Return workday info (date_start and date_end)
-
cancelBooking ($id)
Cancels booking. Returns true on success. Returns an error with code -32080 (Appointment couldn't be found) if
no booking with specified id were found. -
cancelBatch ($id, $bookingIds)
Cancel batch of bookings. Returns true on success. Returns an error with code -32080 (Appointment couldn't be found)
if no booking with specified id were found. A booking with first id in$bookingIds
list is used forinformation in notifications.
-
book ($eventId, $unitId, $clientId, $startDate, $startTime, $endDate, $endTime, $clientTimeOffset, $additional, $count, $batchId, $recurringData)
Creates new booking record. Returns an object with appointment information or throw exception if booking time not
available or any of required parameters missed. If appointment requires confirmation, in result object will berequire_confirm = true
.$startDate
and$startTime
specifies a date of
booking and time slot. Time value should be multiple to 'timeframe' configuration of company (see
[[#getTimeframe|getTimeframe]]
API method).$endDate
and$endTime
parameters
should be calculated according to service duration. However you can specify different values to make appointment
longer or shorter then service configuration. Note that$endDate
and$endTime
should be
later in time than$startDate
and$startTime
. If your clients located in different time
zone you should specify'client_time_offset'
value in$clientData
object as difference
between client's time zone and company's time zone in minutes. For example if company located in city with time
zone GMT+2 and customer located in city with GMT+3 then$clientTimeOffset
will be 60 minutes.
You can get information about company's
time zone using[[#getCompanyInfo|getCompanyInfo]]
API method. To create batch booking you can
specify eithercount
more then 1 or validbatchId
(only one parameter can be
specified). You should specify an$additionalFields
parameter if service requires some additional
fields (see [[Plugins#Additional fields|Additional fields plugin]]).
To create a booking with promo code you should pass it as additional field. For example:{"promocode": "some code"}
If [[Plugins#Unit location|Unit location]] enabled you need to pass locations ID parameter as additional field
location_id
. For example:{"location_id": "1"}
. Use[[#isPluginActivated|isPluginActivated('location')]]
to check if plugin active and[[#getLocationsList|getLocationsList()]]
method to get list of
available locations.
See [[#book response|example]] ofbook
API method response. -
editBook ($shedulerId, $eventId, $unitId, $clientId, $startDate, $startTime, $endDate, $endTime, $clientTimeOffset, $additional)
Edit existing booking record. See [[#book|book]] API method description for more details about date/time parameters,
time zone handling and additional fields. Returns null if parameters not valid. -
addClient ($clientData, $sendEmail)
Adds new client with specified data. You can specify name, email, phone, address1, address2, city, zip,
country_id.email, phone number or both of them can be mandatory fields. You should call
getCompanyParam('require_fields')
method to check which fields are required.
Method returns an error:
* -32061 Client name value is wrong
* -32062 Client email value is wrong
* -32063 Client phone value is wrong
Example:
{
name: "Frances T. Perez",
phone: "+1502-810-4521",
email: "FrancesTPerez@teleworm.us",
address1: "3872 Earnhardt Drive",
address2: "Louisville, KY 40219",
city: Louisville,
zip: 3872
} -
editClient ($clientId, $clientData)
Edits client's record. See
[[#addClient|addClient]]
method description for list of available fields.
Method returns an id of client's record. -
changeClientPassword ($clientId, $password, $sendEmail)
Change client password and send password email changing
-
resetClientsPassword ($clientIds)
Resets client password and send them emails
-
remindClientsPassword ($email)
Sends remind email for client
-
getClientList ($searchString, $limit)
Returns list of clients associated with company. You can use either phone number, email address or name as value
for$searchString
. Pass an empty string for$searchString
and null for$limit
parameters to get all records. See
[[#addClient|addClient]]
API method for list of available fields
of client data object. -
getStatuses ()
Returns list of available statuses or an empty list if [[Plugins#Status|Status plugin]] not enabled.
-
getBookingStatus ($bookingId)
Returns status of given booking (if status plugin is enabled)
default status will be returned if bookingId does not exists -
setStatus ($bookingId, $statusId)
Sets specified status for booking. Returns an error with code -32020 if logged in user don't have access to edit
bookings. This method does nothing if [[Plugins#Status|Status plugin]] not enabled. -
getRecurringSettings ($eventId)
Returns an object with recurring settings for an event. Returns false if specified event does not configured as
recurring. -
getTopServices ($dateStart, $dateEnd)
Returns a list with statistics for services for a period of time. This data contains number of bookings and
revenues value for each service. -
getTopPerformers ()
Returns a list with statistics for performers. This data contains number of bookings and revenues value for each performer.
-
getRecurringDatetimes ($eventId, $unitId, $date, $time, $recurringData, $endDateTime, $productIds)
Get list of dates for recurring booking
-
getCountryList ()
Get list of all countries
-
getStates ()
Get list of all country states
-
getFeedbacks ($approvedOnly, $reviewsOnly, $lastOnly, $limit)
Get list of feedbacks
-
getRecentActions ($lastOnly, $limit)
Returns latest actions
-
getWarnings ($lastObly)
Returns a list of objects represented system warnings. Each warning contains
warning_type
andwarning_text
properties.warning_text
property contains localized message.warning_type
can be one of the values:
* '''sms_limit''' – warning indicates low amount of SMS credits
* '''sheduler_limit''' – warning indicates low amount of available bookings -
updateNotification ($type)
Mark notifications as readed
-
getLastNotificationUpdate ($type)
Returns last update datetime
-
getBookingCancellationsInfo ($dateStart, $dateEnd)
Returns statistics about created bookings and cancellations for a time period. Data presented as array of hashes for
each type of operation (created or cancelled booking) groped by clients."type"
field can be either"create", "cancel" or "nopayment_cancel". If
"user_id"
not specified then bookings where created or
cancelled by admin or employee. Data with type"nopayment_cancel"
represents bookings cancelled
automatically by system.
Example:
3 bookings where created by admin or employee and 2 bookings where automatically cancelled by system.
[{
"cnt" : 3,
"firstname" : null,
"lastname" : null,
"login" : null,
"type" : "create",
"user_id"" : null
}, {
"cnt" : 2,
"firstname" : null,
"lastname" : null,
"login" : null,
"type" : "nopayment_cancel",
"user_id"" : null
}] -
pluginApproveBookingApprove ($id)
Sets approve booking status to 'approved' if [[Plugins#Approve booking|Approve booking]] plugin enabled and returns
list of approved booking IDs. Returns false if plugin not enabled. Use[[#isPluginActivated|isPluginActivated('approve_booking')]]
API method call to check if plugin enabled.
-
pluginApproveBookingCancel ($id)
Sets approve booking status to 'canceled' if [[Plugins#Approve booking|Approve booking]] plugin enabled and returns
true. Returns false if plugin not enabled. Use[[#isPluginActivated|isPluginActivated('approve_booking')]]
API method call to check if plugin enabled.
-
pluginApproveGetPendingBookingsCount ()
Returns count of bookings pending approval if [[Plugins#Approve booking|Approve booking]] plugin enabled. Returns
0 if plugin not enabled. Use[[#isPluginActivated|isPluginActivated('approve_booking')]]
API methodcall to check if plugin enabled.
-
pluginApproveGetPendingBookings ()
Returns list of objects with information about bookings pending approval if [[Plugins#Approve booking|Approve booking]]
plugin enabled. Returns empty list if plugin not enabled. Use[[#isPluginActivated|isPluginActivated('approve_booking')]]
API method call to check if plugin enabled.
-
getPluginList ()
Returns a list of all plugins associated with company with status.
-
getBookingComment ($id)
Returns booking comment
-
setBookingComment ($id, $comment)
Set booking comment
-
getCurrentTariffInfo ()
Returns all information about current tariff (subscription). For example:
{
"name" : "gold",
"expire_date" : "2016-02-11 12:32:00",
"rest" : 41, // number of days until subscription expiration
"color" : "#fcb322"
} -
getRegistrations ($groupBy)
Returns number of clients registrations by 'day', 'week' or 'month'. A time period depends on selected
grouping parameter:
* for 'day' methods returns statistics for last 31 days
* for 'week' methods returns data last 10 weeks period
* for 'month' time period is last 12 months -
getBookingStats ($groupBy)
Returns statistic about bookings count grouped by 'day', 'week' or 'month'. A time period depends on selected
grouping parameter:
* for 'day' methods returns statistics for last 31 days
* for 'week' methods returns data last 10 weeks period
* for 'month' time period is last 12 months -
getVisitorStats ($groupBy)
Returns statistics about page visits if plugin [[Plugins#Visitor Counter|Visitor Counter plugin]] enabled. Returns
an empty list if plugin not enabled. Use[[#isPluginActivated|isPluginActivated('counter')]]
API methodcall to check if plugin enabled. Results can be grouped by 'day', 'week' or 'month'. A time period depends on
selected grouping parameter:
* for 'day' methods returns statistics for last 31 days
* for 'week' methods returns data last 10 weeks period
* for 'month' time period is last 12 months -
getSocialCounterStats ($provider)
Returns social counters value for your domain
-
getCompanyCurrency ()
Returns company's currency as three chars code (ISO 4217).
-
getClientComments ($clientId, $shedulerId)
Returns list of all comments for given client
-
getClientSoapData ($clientId)
Returns current SOAP information by client id
-
getClientSoapHistory ($clientId)
Returns SOAP history by client id
-
getClientSoapCryptData ($clientId)
Returns current SOAP (crypt) information by client id
-
getClientSoapCryptHistory ($clientId)
Returns SOAP (crypt) history by client id
-
getCurrentUserDetails ()
Returns an object with information about logged in user. Note: you are responsible for implementation of some
access rights based ongroup
property value. Most of API methods returns an error if user has low accessrights but not all. There are 4 roles:
* '''Administrator''' - have full access to the system
* '''Senior Employee''' - have access to calendar, services and providers, and can modify bookings related with user
* '''Junior Employee''' - can access caledar (but only to own bookings), services associated with user
* '''Viewer''' - have only access to calendar and services in read only mode
group
property can be one of the values:
*shop_user
- "Senior Employee" access role
*station_user
- "Junior Employee" access role
*admin
- "Administrator" access role
*viewer
- "Viewer" access role
*reseller_company_admin
- reserved
Example:
{
"id": 1,
"login": admin,
"email": "admin@mycoolcompany.com";
"firstname": "Michail",
"lastname": " ",
"phone": "",
"group": "admin",
"is_blocked": 0,
"last_access_time": "2016-06-06 17:55:51",
"unit_group_id": null
}
-
getCategoriesList ($isPublic)
Returns company categories list if [[Plugins#Service categories|Service categories plugin]] is activated. Returns
an error with code -32001 if plugin is not activated. Use[[#isPluginActivated|isPluginActivated('event_category')]]
API method to check if plugin activated.
-
getLocationsList ($isPublic, $asArray)
Returns available locations for company if plugin [[Plugins#Unit location|Unit location plugin]] is activated. Return
an error with code -32001 if plugin is not activated. Use[[#isPluginActivated|isPluginActivated('location')]]
API method to check if plugin activated.
This method accepts two boolean flags as parameters. If '''isPublic''' flag is '''true''' then method returns only
public locations. If '''asArray''' flag is '''true''' method returns list of objects. Otherwise method returns
map of objects with object id as key. You can omit both parameters. -
getMembership ($membershipId)
Returns membership's data object.
-
getClientMembershipList ($clientId)
Returns purchased membership list
-
setWorkDayInfo ($info)
Set work day schedule for company|service|provider for week_day|date
Example:
{
"start_time":"10:00",
"end_time":"18:00",
"is_day_off":0,
"breaktime":[{"start_time":"14:00","end_time":"15:00"}],
"index":"1",
"name":"Monday",
"date":"",
"unit_group_id":"",
"event_id":""
}
index is 1-7 for Monday - Sunday (used for weekly settings)
date is used to set worktime for special date
unit_group_id is provider id
event_id is service id
if unit_group_id and event_id not passed then it set data for company -
deleteSpecialDay ($date, $params)
Delete special date if set
Example:
{
"unit_group_id":"",
"event_id":""
} -
getCompanyWorkCalendarForYear ($year)
Returns company special days and vacations
-
getServiceWorkCalendarForYear ($year, $eventId)
Returns special days and vacations, defined for given service (event)
-
getCompanyVacations ()
Get list of company vacations in format array(vacation_id => array())
-
getServiceVacations ($serviceId)
Get list of service vacations
-
getPerformerVacations ($performerId)
Get list of performer vacations
-
getCompanyVacation ($vacationId)
Get company vacation by id
-
getServiceVacation ($vacationId, $serviceId)
Get service vacation by id
-
getPerformerVacation ($vacationId, $performerId)
Get service vacation by id
-
saveCompanyVacation ($data)
Save company vacation data
(create or update table depending on 'id' param existing in $data) -
saveServiceVacation ($data, $serviceId)
Save company vacation data
(create or update table depending on 'id' param existing in $data) -
savePerformerVacation ($data, $performerId)
Save company vacation data
(create or update table depending on 'id' param existing in $data) -
deleteCompanyVacation ($vacationId)
Delete company vacation with all it's bindings
(including created special days in work_day_special table) -
deleteServiceVacation ($vacationId, $serviceId)
Delete service vacation with all it's bindings
(including created special days in work_day_special table) -
deletePerformerVacation ($vacationId, $unigGroupId)
Delete performer vacation with all it's bindings
(including created special days in work_day_special table) -
getClassesList ($isVisibleOnly, $asArray)
Returns company's classes list. If
$asArray
is false then method returns a map with event id as key
and details object as value. If parameter set to true then method returns a list sorted by 'position' property ofclass's details object.
-
getProductList ($filter)
Returns product list with filter.
At this time filter can accept only service_id parameter -
getBookingReport ()
Get paginated data for Booking report
The following filters can be provided in request param:
Date date_from, date_to, created_date_from, created_date_to
Integer unit_group_id, client_id
String code, promo_code
String booking_type = 'approved' | 'not_approved_yet' | 'cancelled_by_admin' | 'cancelled_by_client' | 'non_cancelled' | 'cancelled' | 'all'
Order can be one of the following values: record_date, date_start, date_start_asc
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getClientReport ()
Get paginated data for Client report
The following filters can be provided in request param:
Date date_from, date_to
Integer event_id, unit_group_id, client_id
String client_search (search string, can contains client name, address, phone)
String service_using_type = 'used_in_period' | 'not_used_in_period' | 'not_used_in_period_but_used_before'
No custom ordering implemented yet
Group data = 'client' | 'client_email_phone' | 'client_email' | 'client_phone'
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getSmsReport ()
Get paginated data for SMS report
The following filters can be provided in request param:
Date date_from, date_to
Integer unit_group_id, client_id
String phone, message
No custom ordering implemented yet (always ordered by client name)
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getSmsGateways ()
gets differend sms providers(transport) used by system
-
getEmailReport ()
Get paginated data for email report
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getPosReport ()
Get paginated data for Pos report
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getFeedbackReport ()
Get paginated data for Feedback report
The following filters can be provided in request param:
Date date_from, date_to
Integer from 1 to 5 rate_from, rate_to
String name, subject, message
Report can be ordered by one of the following fields:
date, rate, name, message, subject, answer
Return data in the following format:
array(
'data' => $data,
'metadata' => array(
'items_count'
'pages_count'
'page'
'on_page'
)
or Api_Service_Exception in error case -
getPromotionList ($isVisibleOnly, $asArray, $promotionType)
Get detailed list of promotions (new)
-
getPromotionInstanceList ($promotionType, $asArray)
Get all list of promotion instances
-
getPromotionDetails ($id)
Return promotion detailed info
-
getStaticPageList ()
Get static page list
-
confirmInvoice ($id, $paymentSystem)
Confirms invoice by id
-
applyPromoCode ($id, $code)
Applies promo code to order (Coupons & Gift Cards custom feature)
-
applyTip ($id, $percent, $amount)
Applies tip to order (Tips custom feature)
You can apply tip by percent or by amount -
getCountByShedulerChannels ($startDate, $endDate)
-
getCompanyParam ($key)
Returns company config value for key. A different set of keys available for public API and for company
administration API. Method return 'invalid params' error (code -32602) in case if access to specified key notallowed. See [[#Company_params|list of available keys]].
-
getCompanyParams ($keys)
Returns company's config values for specified keys as key-value map. For non-existent and not-allowed param keys
it will return '''false''' as result. A different set of keys available for public API and for companyadministration API. See [[#Company_params|list of available keys]].
-
getCancellationPolicy ()
Returns cancellation policy rules.
If cancellation policy custom feature is not activated, method returns null. -
getTimelineType ()
Returns company timeline type
-
getEventList ($isVisibleOnly, $asArray, $handleClasses, $searchString)
Returns company's events list. If
$asArray
is false then method returns a map with event id as key
and details object as value. If parameter set to true then method returns a list sorted by 'position' property ofevent's details object.
-
getUnitList ($isVisibleOnly, $asArray, $handleClasses, $searchString)
Returns list of service performers. If
$asArray
is false then method returns a map with event id as
key and details object as value. If parameter set to true then method returns a list sorted by 'position' propertyof event's details object.
-
calculateEndTime ($startDateTime, $eventId, $unitId, $productIds)
Returns end datetime if booking is available, else return false
-
getWorkCalendar ($year, $month, $data)
Returns company work schedule as array
Eg.:{'2014-05-01': {'from': '09:00:00', 'to': '21:00:00', 'is_day_off': '0'}, '2014-05-02': ...}
-
getReservedTime ($from, $to, $eventId, $unitId, $count)
Returns map of objects for each day in specified date range. The key of the result mps is a date string. The value
is an array of two objects. Both objects contains list of time slots for typereserved_time
and typenot_worked_time
.reserved_time
type represents time slots working time but already booked
by clients. Nobody knows what kind of data represented bynot_worked_time
type. Please don't use it.
If [[Plugins#Google calendar sync plugin|Google calendar sync plugin]] enabled then object with
reserved_time
type will contain not empty list of time slots marked as busy in Google calendar. Call
[[#isPluginActivated|isPluginActivated('google_calendar_export')]]
API method to check if Google
calendar sync plugin activated.
Example:
{
"2016-02-05": [
{
"dd": [], // time slots from Google calendar
"events": [ // reserved time slots
{ "from": "16:00", "to": "16:30" },
{ "from": "16:30", "to": "17:00" },
... ],
"type": "reserved_time",
},
{
"events": [
{ "from": "09:00", "to": "09:30" },
{ "from": "09:30", "to": "10:00" },
... ],
"type": "not_worked_time"
}],
...
}
-
getWorkDaysInfo ($from, $to, $unitId, $eventId, $count, $productIds)
Returns an information about working hours and break times for specified service and performer for a period
between two dates. If only service specified then information about performer (or performers) will be taken fromservice configuration. Method returns a list of objects for each date in specified period. Count of objects in
list depends on break times. For example if performer works from 9:00 till 19:00 with one hour break at 13:00 method
returns:
{'2014-05-14' : [
{'from': '09:00:00', 'to': '13:00:00'},
{'from': '14:00:00', 'to': '19:00:00'}
] }
Warning! Method can return a time string '24:00:00' as right edge of time range. This happens in case if time
range finishes on midnight. -
getFirstWorkingDay ($data)
Returns first working date for unit
-
getStartTimeMatrix ($from, $to, $eventId, $unitId, $count, $bookingId, $productIds)
Returns available start time, taking into account breaktimes, start and end working time
Eg.:{'2014-05-14': ['09:00:00', ...], ...}
If locations plugin activated for company you should pass a list as $unitID parameter for filter results with
units available only for selected location. See [[Plugins#Unit_location|Unit location]] plugin description for
more details. -
getCartesianStartTimeMatrix ($from, $to, $eventId, $unitId, $count, $bookingId, $productIds)
Returns available start time, taking into account breaktimes, start and end working time.
The difference between getStartTimeMatrix and getCartesianStartTimeMatrix is that getCartesianStartTimeMatrixprovides time slots for each individual provider.
Eg.:{"provider_id": 1, "service_id": 1, "timeslots": {"2014-05-14": ['09:00:00', ...], ...}, ...}
If locations plugin activated for company you should pass a list as $unitID parameter for filter results with
units available only for selected location. See [[Plugins#Unit_location|Unit location]] plugin description for
more details. -
getAvailableTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count)
Returns available time intervals for all service providers for given period, taking into account breaktimes, start and end working time
Eg.:{['2016-03-04': ['1': [['09:00:00','09:30:00'], ['11:15:00','14:45:00']] , ...], ...]}
-
getServiceAvailableTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count)
Returns available time intervals for all servics for given period, taking into account breaktimes, start and end working time
Eg.:{['2016-03-04': ['1': [['09:00:00','09:30:00'], ['11:15:00','14:45:00']] , ...], ...]}
-
getReservedTimeIntervals ($dateFrom, $dateTo, $eventId, $unitId, $count, $bookingId)
Returns not available time
Eg.:{'2014-05-14': [{'reserved_time': [{'from': '14:00', 'to': '16:30'}], 'type': "reserved_time"}, ...], ...}
-
getAvailableUnits ($eventId, $dateTime, $count, $unitId, $productIds)
Returns list of available unit ids for specified date and service or empty array if all units are not allowed.
Eg.:[1, 2, 3]
-
getAnyUnitData ()
Returns information about [[Plugins#Any_Employee_selector|Any Employee selector plugin]] configuration. Returns
null if plugin not enabled.
Example:
{
"description" : "Select this option, if you want to find an available time with any of the employees",
"hide_other_units" : 1, // 1 or 0
"image" : null,
"name" : "Any employee",
"picture_path" : null,
"random_selection" : 0 // 1 or 0
} -
getAdditionalFields ($eventId)
Return additional fields for certain event if [[Plugins#Additional_fields|Additional fields plugin]] is
activated. Returns empty array otherwise. Call[[#isPluginActivated|isPluginActivated('event_field')]]
API method to check if 'event_field' plugin activated.
-
getTimeframe ()
Returns company's timeframe configuration (in minutes). Timeframe can be either 5, 10, 15, 20, 30 or 60 minutes.
You can find more details about timeframe [[Settings#Timeframe|here]]. -
isPluginActivated ($pluginName)
Return plugin status true if status active, else false. $pluginName parameter is a plugin identifier.
See [[Plugins|plugins]] page for full plugins description. See [[#Plugin's identifiers|list of available plugin's names]]. -
getPluginStatuses ($pluginNames)
Return plugin status true if status active, else false. See [[#Plugin's identifiers|list of available plugin's names]].
-
getCompanyInfo ()
Returns an object with detailed information about company. See [[#getCompanyInfo response|example of response]].
-
createBatch ()
Creates new booking batch record. Returns newly created batch id. You can use this id in
[[#book|book]]
API method. -
getCountryPhoneCodes ()
Returns country phone code list
-
getPluginPromoInfoByCode ()
Returns an object with detailed information about promotion by promotion code. You can get promotion code
using[[Catalogue#getPromotionList|getPromotionList]]
API method. If promotion record with specifiedcode not found then method returns an empty array (an empty object). If [[Plugins#Simply Smart Promotions|Simply Smart Promotions plugin]]
not enabled then method returns an error with code -32001 (Plugin is not activated). Use
[[#isPluginActivated|isPluginActivated('promo')]]
API method call to check if plugin enabled.
See [[#getPromotionList response|example]] ofgetPromotionList
API method response. Please note that
response contains a list of services for wich promotion discount can be applied (service_ids
key). -
getCompanyTimezoneOffset ()
Returns company timezone offset and company timezone
Посилання на сервіс https://user-api.simplybook.me/catalog
-
getCompanyList ($filter, $from, $limit)
Returns companies list
$filter filter params. Object that contains following params
'search_string': String,
'service_name': String,
'company_name': String,
'company_address': String,
'category_id': Integer,
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String,
'nearby': {
'radius': Integer,
'center': {
'lat': Number,
'lng': NUmber
}
}
Use tag_ids OR tags -
getPromotionList ($filter, $from, $limit)
Returns active promotion list
$filter filter params. Object that contains following params
'search_string': String,
'service_name': String,
'company_name': String,
'company_address': String,
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String,
'nearby': {
'radius': Integer,
'center': {
'lat': Number,
'lng': NUmber
}
}
Use tag_ids OR tags -
getPromotionListByIds ()
Returns active promotion list
-
getCompanyCount ($filter)
Returns total companies count with specified filter
$filter filter params. Object that contains following params
'search_string': String,
'service_name': String,
'company_name': String,
'company_address': String,
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String,
'nearby': {
'radius': Integer,
'center': {
'lat': Number,
'lng': NUmber
}
}
Use tag_ids OR tags -
getPromotionCount ($filter)
Returns total active promotions count with specified filter
$filter filter params. Object that contains following params
'search_string': String,
'service_name': String,
'company_name': String,
'company_address': String,
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String,
'nearby': {
'radius': Integer,
'center': {
'lat': Number,
'lng': NUmber
}
}
Use tag_ids OR tags -
getTopCountries ()
Returns country list as Array order by company count in country
-
getTopCities ()
Returns city list as Array order by company count in city
-
getCountries ()
Returns a list of objects with just two properties each:
id
and country. Anid
is a two character string with ISO 3166-1 country code. -
getCities ($country, $withActiveCompany)
Returns a list of objects. If
$country
parametr specified then method returns only cities of this
country. Each object in list has 4 properties:
*id
- number. A unique identificator of city. You should use it as filter options in methodsgetCompanyList
.
*city
- string. A city name.
*count_id
- string. Two chars ISO 3166-1 country code.
*count
- number.
Example:
[{
"cnt" : 7,
"country_id"" : "GB",
"id" : 4607,
"name" : "Uxbridge"
},
...]
-
getTags ($filter)
Returns tags list
$filter filter params. Object that contains following params
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String
Use tag_ids OR tags -
getCompanyInfo ($login)
Returns company information by company login
-
getPromotionInfo ($id, $feedbackFrom, $feedbackCount)
Returns promotion information by id
-
getRelatedPromotions ($id, $count)
Returns related promotions by given promotion id
-
getCompanyReviews ($login, $count, $offset)
Returns a list of company's review objects.
[{
"company_id" : 86409,
"domain" : "simplybook.me",
"feedback_datetime" : "2015-10-27 13:06:57",
"feedback_id" : 4623,
"feedback_link" : "",
"id" : 17384,
"image" : "http://graph.facebook.com/1020443689023222/picture",
"link" : "https://www.facebook.com/app_scoped_user_id/1020443689023222/",
"message" : "Brilliant!",
"name" : "Simply Booker",
"provider" : "",
"provider_data" : "...", // String. An object encoded with PHP's serialize method.
"rate" : 5, // 0 to 5 rate
"status" : "approved", // 'new' or 'approved'
"subject" : "Good",
"with_comment" : 1
},
...]
-
getCompanyReviewsCount ($login)
Returns company's reviews count
-
getCompanyReview ($login, $reviewId)
Returns a company's review objects.
-
getClientReviewsLikes ($clientId, $clientProvider)
Returns a list of company's review likes.
-
addCompanyReview ($login, $subject, $message, $rate, $provider, $accessToken)
Adds company review
-
addPromotionReview ($promotionId, $subject, $message, $rate, $provider, $accessToken)
Add promotion review
-
getPromotionReviews ($promotionId)
Returns promotion reviews list
-
getRecentPromotions ($count)
Returns list of promotions ordered by date DESC
-
getRecentFeedbacks ($count)
Returns list of feedbacs ordered by date DESC
-
getRecentCompanies ($count)
Returns list of companies ordered by date DESC
-
getCategories ()
Returns all categories as list of objects. Each category can have a subcategories. Each subcategory contains parent
category id incompany_category_id
field. For top level categories this field isnull
andis_header
field istrue
.
Example:
[{
"company_category_id": null,
"id": "1",
"image": "/common/images/category_icons/car.png",
"is_active": "1",
"is_header": "1",
"name": "Cars",
},
{
"company_category_id": "1",
"id" = 11;
"image": null,
"is_active": "1",
"is_header": "0",
"name": "Car wash",
},
...]
-
getFeedbackList ()
Get list of ALL simplybook feedbacks
-
getCompanyPromotionList ($promotionCompanyLogin, $count)
Returns a list of promotions objects associated with specified company. If company doesn't have any promotions or
[[Plugins#Simply_Smart_Promotions|Simply Smart Promotions plugin]] not active for this company method returns anempty list.
-
getUserLocation ($ip)
Returns user location info
-
getAutocompleete ($filter, )
Returns suggestions for autocompeter
$filter filter params. Object that contains following params
'search_string': String,
'service_name': String,
'company_name': String,
'company_address': String,
'category_id': Integer,
'tag_ids': [Integer, Integer, ...],
'tags': String,
'country_id': String,
'city_id': String,
'nearby': {
'radius': Integer,
'center': {
'lat': Number,
'lng': NUmber
}
}
Use tag_ids OR tags -
deleteClientFeedbacks ($gdprDataSerialized)
Anonymize client feedbacks and feedback likes
according to GDPR client's right to be forgotten -
deleteClientPromotionFeedbacks ($gdprDataSerialized)
Delete promotion_feedbak and promotion_feedback_response data
according to GDPR client's right to be forgotten
Методи
-
Get additional fields list
Return intake forms fields. (intake forms custom feature)
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
service_id - return fields for this serviceКінцева точка:
/admin/additional-fieldsМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|AdditionalFieldEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/additional-fields?filter[service_id]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Authentication
Authentication process. Return auth token info (TokenEntity)
Accepts AdminLoginEntity data as body of request.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/authМетод:
POSTЗапит параметрів:
AdminLoginEntity body - authentication dataВідповідь:
Повертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/auth Content-Type: application/json { "company": "<insert your company login>", "login": "<insert your user login>", "password": "<insert your user password>" }
-
Second factory authentication
Second factory authentication process. Return auth token info (TokenEntity). Required in case 2FA authentication is enabled.
Pass session from authentication step. In case you use SMS as 2fa provider you need to call /admin/auth/sms to receive SMS with code.
Accepts AdminLogin2FAEntity data as body of request.
Throws BadRequest error in case invalid data was provided with detailed errors per field.
Throws AccessDenied error in case user does not have access to perform this action.Кінцева точка:
/admin/auth/2faМетод:
POSTЗапит параметрів:
AdminLogin2FAEntity body - second factory authentication dataВідповідь:
Повертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/auth/2fa Content-Type: application/json { "company": "<insert your company login>", "session_id": "<insert session_id value from auth request>", "code": "<insert 2FA code>", "type": "<insert 2FA type (ga/sms)>" }
-
Get SMS code
Send SMS to user phone number. Returns empty response.
Throws BadRequest error in case invalid data was provided.
Throws AccessDenied error in case user does not have access to perform this action.Кінцева точка:
/admin/auth/smsМетод:
GETЗапит параметрів:
string company - company loginstring session_id - company loginПовертає:
AccessDeniedBadRequestПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/auth/sms?company=<insert your company login>&session_id=<insert session_id value from auth request> Content-Type: application/json
-
Renew token with refresh token
Renew token with refresh token with refresh token, that was received on authentication step. Return TokenEntity.
Accepts RefreshTokenEntity data as body of request.
Throws BadRequest error in case invalid data was provided.
Throws AccessDenied error in case user does not have access to perform this action.Кінцева точка:
/admin/auth/refresh-tokenМетод:
POSTЗапит параметрів:
RefreshTokenEntity body - refresh token dataПовертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/auth/refresh-token Content-Type: application/json { "company": "<insert your company login>", "refresh_token": "<insert refresh_token from auth step>" }
-
Logout and revoke token
Revoke token that was received on authentication.
Accepts AdminLogoutEntity data as body of request.
Throws BadRequest error in case invalid data was provided.
Throws AccessDenied error in case user does not have access to perform this action.Кінцева точка:
/admin/auth/logoutМетод:
POSTЗапит параметрів:
AdminLogoutEntity body - logout dataПовертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/auth/logout Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "auth_token": "<insert your token from auth step>" }
-
Make new booking
Make new booking and return booking result (BookingResultEntity).
Accepts AdminBookingBuildEntity data as body of request.
Throws AccessDenied error in case user does not have access to booking.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/bookingsМетод:
POSTЗапит параметрів:
AdminBookingBuildEntity body - booking dataВідповідь:
Повертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/bookings Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "count": 1, "start_datetime": "2020-12-02 09:30:00", "location_id": 2, "category_id": 2, "provider_id": 4, "service_id": 3, "client_id": 10, "additional_fields": [ { "field": "e5a1d0e5312b9515874406a89c986765", "value": "test" }, { "field": "3adae019f9183fcfb7b02fcef54b094d", "value": "Option 1" }, { "field": "9c3ce1fc22bd50cbb21bdfcfd2f850bf", "value": "988" }, { "field": "1a2e4bdc78b9fd4593d8924b25f38244", "value": "Select 2" } ] }
-
Edit booking
Modify booking and return booking result (BookingResultEntity).
Accepts AdminBookingBuildEntity data as body of request.
Throws AccessDenied error in case user does not have access to booking.
Throws BadRequest error in case invalid data was provided with detailed errors per field.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}Метод:
PUTЗапит параметрів:
int id - booking idAdminBookingBuildEntity body - booking dataВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/bookings/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "count": 1, "start_datetime": "2020-12-02 09:30:00", "location_id": 2, "category_id": 2, "provider_id": 4, "service_id": 3, "client_id": 10, "additional_fields": [ { "field": "e5a1d0e5312b9515874406a89c986765", "value": "test" }, { "field": "3adae019f9183fcfb7b02fcef54b094d", "value": "Option 1" }, { "field": "9c3ce1fc22bd50cbb21bdfcfd2f850bf", "value": "988" }, { "field": "1a2e4bdc78b9fd4593d8924b25f38244", "value": "Select 2" }, { "field": "b90b2d238ffc2a7a782c6a81a8e60bb1", "value": "test" } ] }
-
Get booking details
Return booking item entity by booking id. (AdminBookingDetailsEntity)
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}Метод:
GETЗапит параметрів:
int id - booking idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/bookings/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Cancel booking
Cancel booking by booking id and return booking that was canceled (AdminBookingDetailsEntity).
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}Метод:
DELETEЗапит параметрів:
int id - booking idВідповідь:
Повертає:
AccessDeniedBadRequestПриклад HTTP запиту:
DELETE https://user-api-v2.simplybook.me/admin/bookings/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Approve booking with approve booking custom feature
Approve booking by booking id and return booking details (AdminBookingDetailsEntity).
Throws AccessDenied error in case user does not have access to booking.
Throws BadRequest error in case booking can not be approved.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}/approveМетод:
PUTЗапит параметрів:
int id - booking idВідповідь:
Повертає:
AccessDeniedBadRequestПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/bookings/1/approve Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Apply status with status custom feature
Apply booking status booking by booking id and return booking details (AdminBookingDetailsEntity).
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}/statusМетод:
PUTЗапит параметрів:
int id - booking idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/bookings/1/status Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "status_id": 1 }
-
Get booking links
Return booking links entity by booking id. (AdminBookingLinksEntity)
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}/linksМетод:
GETЗапит параметрів:
int id - booking idВідповідь:
AdminBookingLinksEntityПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/bookings/1/links Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Set comment for booking
Set booking comment by booking id and return booking details (AdminBookingDetailsEntity).
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/bookings/{id}/commentМетод:
PUTЗапит параметрів:
int id - booking idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/bookings/1/comment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "comment": "This is booking comment." }
-
Get schedule
Return array of day schedule info objects for selected service, provider and datesКінцева точка:
/admin/scheduleМетод:
GETЗапит параметрів:
int service_id - selected service idint provider_id - selected provider idstring date_from - date fromstring date_to - date toВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/schedule?date_from=2020-08-25&date_to=2020-08-27&provider_id=2&service_id=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get slots
Return array of available slots to book as admin.
It just returns schedule of day divided by slots.Кінцева точка:
/admin/schedule/slotsМетод:
GETЗапит параметрів:
int service_id - selected service idint provider_id - selected provider idstring date - selected dateВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/schedule/slots?date=2020-08-28&provider_id=1&service_id=5 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get available slots
Return array of available slots to book.Кінцева точка:
/admin/schedule/available-slotsМетод:
GETЗапит параметрів:
int service_id - selected service idint provider_id - selected provider idstring date - selected dateint count - group booking countarray|int[] products - array of selected addonsВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/schedule/available-slots?date=2020-08-27&provider_id=1&service_id=5 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get first available slot
Return first available slot for selected service/provider/date
It can return slot for different date in case all slots are busy for selected date.Кінцева точка:
/admin/schedule/first-available-slotМетод:
GETЗапит параметрів:
int service_id - selected service idint provider_id - selected provider idstring date - selected dateint count - group booking countВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/schedule/first-available-slot?date=2020-08-30&provider_id=1&service_id=5 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get slots timeline
Return data for slots timeline per date.Кінцева точка:
/admin/timeline/slotsМетод:
GETЗапит параметрів:
int service_id - selected service idint provider_id - selected provider idstring date_from - date fromint count - bookings countbool with_available_slots - to calculate available slots count (Display Remaining Spaces custom feature required)int booking_id - timeline for edit bookingint[]|array product_ids - array of selected service addons idsbool skip_min_max_restriction - to skip min and max restrictionВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/timeline/slots?date_from=2020-09-25&date_to=2020-09-25&provider_id=1&service_id=1&with_available_slots=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get bookings list
Return bookings list.
Please note that result is wrapped into paginated result.
Throws AccessDenied error in case user does not have access to bookings report.
In GET parameters you can pass page, on_page and filter with following parameters:
upcoming_only - return upcomming bookings only
status - booking status (can be confirmed/confirmed_pending/pending/canceled)
services - array of service ids to filter by services
providers - array of provider ids to filter by providers
client_id - client id. to filter by client id
date - filter by date
search - search string (by code, client data)
additional_fields - search by additional fields (&filter[additional_fields][field] = value)Кінцева точка:
/admin/bookingsМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
array|AdminReportBookingEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/bookings?filter[upcoming_only]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get calendar data
Return calendar data with bookings, notes and break times.
Throws AccessDenied error in case user does not have access to bookings report.
In GET parameters you can pass mode (day, week, provider or service) and filter with following parameters:
upcoming_only - return upcomming bookings only
status - booking status (can be confirmed/confirmed_pending/pending/canceled)
services - array of service ids to filter by services
providers - array of provider ids to filter by providers
client_id - client id. to filter by client id
date_from - filter by date from
date_to - filter by date to
search - search string (by code, client data)
additional_fields - search by additional fields (&filter[additional_fields][field] = value)Кінцева точка:
/admin/calendarМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/calendar?mode=provider&filter[status]=confirmed_pending&filter[date_from]=2020-08-26&filter[date_to]=2020-08-26 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Generate new detailed report task
In POST parameters you can pass filter (see http example) with following parameters:
code Booking code
created_date_from Created date to
created_date_to Created date from
date_from Date to
date_to Date from
event_id Service
unit_group_id Service provider
client_id Client
booking_type cancelled or non_cancelledКінцева точка:
/admin/detailed-reportМетод:
POSTЗапит параметрів:
object filter - filter objectobject export_columns - export_columns objectstring order_directionstring order_fieldВідповідь:
arrayПовертає:
AccessDeniedBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/detailed-report Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "filter": { "created_date_from": "2021-01-01", "created_date_to": "2021-03-31", "date_from": "2021-01-02", "date_to": "2021-03-29", "event_id": "2", "unit_group_id": "7", "client_id": "12", "booking_type": "non_cancelled" }, "export_columns": [ ], "order_direction": "asc", "order_field": "record_date" }
-
Get report by id
Return report info by id.
Throws AccessDenied error in case user does not have access to report.
Throws NotFound error in case report is not found.Кінцева точка:
/admin/detailed-report/{id}Метод:
GETЗапит параметрів:
string id - report idВідповідь:
arrayПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/detailed-report/193 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Set medical test status for booking
Кінцева точка:
/admin/medical-test/status/{id}Метод:
PUTЗапит параметрів:
int id - booking idstring status - statusПовертає:
AccessDeniedNotFoundBadRequestПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/medical-test/status/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "status": "negative" }
-
Get clients list
Return clients list.
Please note that result is wrapped into paginated result.
In GET parameters you can pass page, on_page and filter with following parameters:
search - search stringКінцева точка:
/admin/clientsМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
array|ClientEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/clients?page=1&on_page=10&filter[search]=al Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get client
Return client item item by id.
Throws AccessDenied error in case user does not have access to perform this action.
Throws NotFound error in case client is not found.Кінцева точка:
/admin/clients/{id}Метод:
GETЗапит параметрів:
int id - client idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/clients/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Create client
Create new client and return it.
Throws AccessDenied error in case user does not have access to perform this action.
Throws BadRequest error in case invalid data was provided with detailed errors per field.
Throws NotFound error in case client is not found.Відповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/clients Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "name": "Mike", "email": "mikeemail@gmail.com", "phone": "+123456789987" }
-
Edit client
Modify client by id and return it.
Throws AccessDenied error in case user does not have access to perform this action.
Throws BadRequest error in case invalid data was provided with detailed errors per field.
Throws NotFound error in case client is not found.Кінцева точка:
/admin/clients/{id}Метод:
PUTЗапит параметрів:
ClientEntity body - client dataint id - client idВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/clients/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "name": "Mike", "email": "mikeemail@gmail.com", "phone": "+123456789987" }
-
Delete client
Delete client by id. Return empty response
Throws AccessDenied error in case user does not have access to perform this action.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/clients/{id}Метод:
DELETEЗапит параметрів:
int id - client idПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
DELETE https://user-api-v2.simplybook.me/admin/clients/1000 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get client memberships list
Return client membership list.
Please note that result is wrapped into paginated result.
In GET parameters you can pass page, on_page and filter with following parameters:
client_id - client id
service_id - service id
service_start_date - booking start date (to filter actual memberships only)
count - group bookings count
active_only - active memberships only
search - search stringКінцева точка:
/admin/clients/membershipsМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
array|AdminClientMembershipPaymentEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/clients/memberships?page=1&on_page=10&filter[client_id]=78&filter[service_id]=8&filter[service_start_date]=2020-08-20 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get client fields list
Returns client fields list, including name, email, phone and address fields.Кінцева точка:
/admin/clients/fieldsМетод:
GETВідповідь:
array|Client_FieldDetailsEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/clients/fields Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get client fields values
Returns client fields values list, including name, email, phone and address fields.
Throws AccessDenied error in case user does not have access to perform this action.
Throws NotFound error in case client is not found.Кінцева точка:
/admin/clients/field-values/{id}Метод:
GETЗапит параметрів:
int id - client idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/clients/field-values/2 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Edit client with fields
Modify client data from fields list.
Returns client fields list, including name, email and phone field.
Throws AccessDenied error in case user does not have access to perform this action.
Throws NotFound error in case client is not found.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/clients/field-values/{id}Метод:
PUTЗапит параметрів:
int id - client idClient_DetailsEntity body - client dataВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/clients/field-values/7 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "id": 7, "fields": [ { "id": "name", "value": "test" }, { "id": "email", "value": "test@gmail.com" }, { "id": "phone", "value": "38099999999999" }, { "id": "de3b235b9e42131c9a86b5449acca9dd", "value": 12 } ] }
-
Make client with fields
Makes new client from fields list.
Returns client fields list, including name, email and phone field.
Throws AccessDenied error in case user does not have access to perform this action.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/clients/field-valuesМетод:
POSTЗапит параметрів:
Client_DetailsEntity body - client dataВідповідь:
Повертає:
BadRequestAccessDeniedПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/clients/field-values Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "id": null, "fields": [ { "id": "name", "value": "test" }, { "id": "email", "value": "test@gmail.com" }, { "id": "phone", "value": "38099999999999" }, { "id": "de3b235b9e42131c9a86b5449acca9dd", "value": 12 } ] }
-
Make membership instance
Кінцева точка:
/admin/memberships/make-membership-instanceМетод:
POSTЗапит параметрів:
MakeMembershipInstanceRequestEntity membership - instance dataПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/memberships/make-membership-instance Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "membership_id": "1", "period_start": "2021-08-26", "is_invoice_needed": 1, "payment_processor": "cash", "auto_confirm_prolonging": 1, "repeat_count": 5, "clients": [ "42" ] }
-
Cancel membership
Кінцева точка:
/admin/memberships/cancel-client-membership/{id}Метод:
DELETEЗапит параметрів:
int id - client membership idПовертає:
AccessDeniedNotFound -
Get notes list
Return notes list.
Please note that result is wrapped into paginated result.
In GET parameters you can pass page, on_page and filter with following parameters:
providers - filter by providers. array of providers ids
services - filter by services. array of services ids
types - filter by note types. array of types ids
search - search string
date_from - date from
date_to - date toКінцева точка:
/admin/calendar-notesМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
array|CalendarNoteEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/calendar-notes?page=1&filter[services][]=1&filter[services][]=2&filter[date_from]=2020-08-01&filter[date_to]=2020-08-10 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get note details
Return note details by id
Throws AccessDenied error in case user does not have access to the calendar note.
Throws NotFound error in case the calendar note is not found.Кінцева точка:
/admin/calendar-notes/{id}Метод:
GETЗапит параметрів:
int id - calendar note idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/calendar-notes/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Create new note
Create new note and return it.
Throws AccessDenied error in case user does not have access to the calendar note.
Throws NotFound error in case the calendar note is not found.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/calendar-notesМетод:
POSTЗапит параметрів:
CalendarNoteEntity body - calendar noteВідповідь:
Повертає:
AccessDeniedNotFoundBadRequestПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/calendar-notes Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "provider_id": 1, "service_id": null, "start_date_time": "2020-09-06 15:00:00", "end_date_time": "2020-09-06 15:30:00", "note_type_id": "1", "note": "note body", "mode": "provider", "time_blocked": true }
-
Modify note
Edit note and return it.
Throws AccessDenied error in case user does not have access to the calendar note.
Throws NotFound error in case the calendar note is not found.
Throws BadRequest error in case invalid data was provided with detailed errors per field.Кінцева точка:
/admin/calendar-notes/{id}Метод:
POSTЗапит параметрів:
int id - calendar note idCalendarNoteEntity body - calendar noteВідповідь:
Повертає:
AccessDeniedNotFoundBadRequestПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/calendar-notes/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "provider_id": 2, "service_id": null, "start_date_time": "2020-09-06 15:00:00", "end_date_time": "2020-09-06 15:30:00", "note_type_id": "1", "note": "note body", "mode": "provider", "time_blocked": true }
-
Delete calendar note
Delete calendar note by id. Return empty response
Throws AccessDenied error in case user does not have access to booking.
Throws NotFound error in case booking is not found.Кінцева точка:
/admin/calendar-notes/{id}Метод:
DELETEЗапит параметрів:
int id - calendar note idПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
DELETE https://user-api-v2.simplybook.me/admin/calendar-notes/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get note types list
Return array of not typesКінцева точка:
/admin/calendar-notes/typesМетод:
GETВідповідь:
array|CalendarNoteTypeEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/calendar-notes/types Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get default note type
Return default note type objectКінцева точка:
/admin/calendar-notes/types/defaultМетод:
GETВідповідь:
Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/calendar-notes/types/default Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get orders/invoices list
Return orders and invoices list.
Note that not all data can be presented in list result. To get full info you need to get separate item.
Please note that result is wrapped into paginated result.
In GET parameters you can pass page, on_page and filter with following parameters:
client_id - client id
datetime_from - order/invoice date and time from
datetime_to - order/invoice date and time to
status - order/invoice status
booking_code - filter by booking codeКінцева точка:
/admin/invoicesМетод:
GETЗапит параметрів:
int page - page in listint on_page - items per pageobject filter - filter objectВідповідь:
array|AdminInvoiceEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/invoices?filter[booking_code]=0z2ohjmy Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get order/invoice item
Return order/invoice item by idКінцева точка:
/admin/invoices/{id}Метод:
GETЗапит параметрів:
int id - invoice/order idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/invoices/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get order/invoice page url
Return order/invoice page urlКінцева точка:
/admin/invoices/{id}/linkМетод:
GETЗапит параметрів:
int id - invoice/order idВідповідь:
stringПовертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/invoices/2/link Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Accept payment
Manual accept payment. The order will be marked as payed with provided payment processor.
You can pass payment_processor as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/accept-paymentМетод:
PUTЗапит параметрів:
int id - order idstring payment_processor - payment processorВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/invoices/1/accept-payment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "payment_processor": "manual" }
-
Accept payment with saved payment method
Accept payment with client saved payment method.
The order will be marked as payed only after confirmation from payment system.
You have to pass payment_method_id as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/rebillМетод:
PUTЗапит параметрів:
int id - order idint payment_method_id - payment method idВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/invoices/1/rebill Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "payment_method_id": 1 }
-
Get payment link
Generates payment link for order/invoice.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/payment-linkМетод:
GETЗапит параметрів:
int id - order idПовертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/invoices/2/payment-link Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Send payment link
Generates payment link and send to customer.
You have to pass type as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/send-payment-linkМетод:
PUTЗапит параметрів:
int id - order idstring type - message type (email/sms)Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/invoices/2/send-payment-link Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "type": "email" }
-
Apply promo code
Apply promo code. Coupons & Gift Cards custom feature.
You can apply promo code only to pending and new orders.
You can pass code as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/apply-promo-codeМетод:
PUTЗапит параметрів:
int id - order idstring code - promo codeВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
PUT https://user-api-v2.simplybook.me/admin/invoices/1/apply-promo-code Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "code": "tapyjuju" }
-
Remove applied promo code
Remove applied promo code. Coupons & Gift Cards custom feature.
You can remove promo code only from pending and new orders.
You can pass code as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/promo-code/{instanceId}Метод:
PUTЗапит параметрів:
int id - order idint instanceId - promo code instance idВідповідь:
Повертає:
AccessDeniedBadRequestNotFoundПриклад HTTP запиту:
DELETE https://user-api-v2.simplybook.me/admin/invoices/1/promo-code/3 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Apply tip
Apply tip. Tips custom feature.
You can apply tip only to pending and new orders.
You can pass percent or amount as GET parameter and in body of request.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/tipМетод:
PUTЗапит параметрів:
int id - order idint percent - tip percentfloat amount - tip amountВідповідь:
Повертає:
AccessDeniedBadRequestNotFound -
Remove applied tip
Remove applied tip. Tips custom feature.
You can remove tip only from pending and new orders.
Throws AccessDenied error in case user does not have access to order.
Throws BadRequest error in case invalid data was provided with detailed errors.
Throws NotFound error in case order/invoice is not found.Кінцева точка:
/admin/invoices/{id}/tipМетод:
DELETEВідповідь:
Повертає:
AccessDeniedBadRequestNotFound -
Make payment with terminal
Кінцева точка:
/admin/invoices/{id}/make-terminal-paymentМетод:
POSTЗапит параметрів:
int id - order idstring paymentSystem - payment systemstring|null readerId - reader idПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/invoices/571/make-terminal-payment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "paymentSystem": "stripe" } ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/reader/list Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### POST https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-connection-token Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-config-location Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get terminal readers cross payment systems
Кінцева точка:
/admin/invoices/terminal/reader/listМетод:
GETПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/invoices/571/make-terminal-payment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "paymentSystem": "stripe" } ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/reader/list Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### POST https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-connection-token Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-config-location Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Create stripe connection token
Кінцева точка:
/admin/invoices/terminal/stripe-connection-tokenМетод:
POSTПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/invoices/571/make-terminal-payment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "paymentSystem": "stripe" } ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/reader/list Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### POST https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-connection-token Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-config-location Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get stripe terminal location from config
Кінцева точка:
/admin/invoices/terminal/stripe-config-locationМетод:
GETПриклад HTTP запиту:
POST https://user-api-v2.simplybook.me/admin/invoices/571/make-terminal-payment Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "paymentSystem": "stripe" } ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/reader/list Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### POST https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-connection-token Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> ### GET https://user-api-v2.simplybook.me/admin/invoices/terminal/stripe-config-location Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get client saved payment methods list
Returns array of client saved payment methods
The id is client id and it is required.Кінцева точка:
/admin/payment-methods/{id}Метод:
GETЗапит параметрів:
int id - client idВідповідь:
array|PaymentMethodEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/payment-methods/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get products/attributes list
Return products/attributes list. (products/service addons custom features)
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
service_id - return products/attributes for selected service
search - search string
type - product type. can be 'product' or 'attribute'
visible_only - visible products onlyКінцева точка:
/admin/productsМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|ProductEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/products?filter[search]=cofee&filter[service_id]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get product/attribute item
Return product/attribute item by id.Кінцева точка:
/admin/products/{id}Метод:
GETВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/products/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get promotions list
Return promotions list. (Coupons & Gift cards custom feature)
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
service_id - filter by service
visible_only - visible only promotions
promotion_type - gift_card/discountКінцева точка:
/admin/promotionsМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|PromotionEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/promotions?filter[service_id]=1&filter[promotion_type]=gift_card Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get gift cards list
Return promotion instances list. (Coupons & Gift cards custom feature)
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
purchased_by_client_id - filter by client who purchased gift card
used_by_client_id - filter by client who used gift card
service_id - filter by service
user_id - user, who issued gift card
duration - duration
duration_type - duration type
price_from - gift card price from
price_to - gift card price to
status - filter by status (outdated, used, disabled, valid)
expired_date_from - expired date from
expired_date_to - expired date to
start_date_from - start date from
start_date_to - start date to
discount_from - discount from
discount_to - discount to
used_amount_from - used amount from
used_amount_to - used amount to
code - filter by codeКінцева точка:
/admin/promotions/gift-cardsМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|PromotionInstanceEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/promotions/gift-cards?filter[start_date_from]=2021-08-30&filter[status]=active&filter[service_id]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get coupons list
Return promotion instances list. (Coupons & Gift cards custom feature)
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
used_by_client_id - filter by client who used coupon
service_id - filter by service
user_id - user, who issued coupon
duration - duration
duration_type - duration type
status - filter by status (outdated, used, disabled, valid)
expired_date_from - expired date from
expired_date_to - expired date to
start_date_from - start date from
start_date_to - start date to
discount_from - discount from
discount_to - discount to
code - filter by codeКінцева точка:
/admin/promotions/couponsМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|PromotionInstanceEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/promotions/coupons?filter[start_date_from]=2021-08-30&filter[status]=active Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Issue gift card
Кінцева точка:
/admin/promotions/issue-gift-cardsМетод:
POSTЗапит параметрів:
AdminPromotionIssueGiftCardEntity body - issue gift card requestВідповідь:
array|PromotionInstanceEntity[]Приклад HTTP запиту:
### issue non-personalized gift cards POST https://user-api-v2.simplybook.me/admin/promotions/issue-gift-card Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "promotion_id": 1, "start_date": "2021-08-30", "personalized": false, "count": 10 } ### issue personalized gift cards POST https://user-api-v2.simplybook.me/admin/promotions/issue-gift-card Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step> { "promotion_id": 1, "start_date": "2021-08-30", "personalized": true, "clients": [1], "send_email": true, "email_body": "Your gift card code: [code]", "email_subject": "Your gift card!" }
-
Get providers list
Return providers list.
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
search - search string
service_id - filter providers by service (only providers that can provide this service)Кінцева точка:
/admin/providersМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|ProviderEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/providers?filter[search]=mike&filter[service_id]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get provider
Return provider item by id.
Throws AccessDenied error in case user does not have access to provider.
Throws NotFound error in case provider is not found.Кінцева точка:
/admin/providers/{id}Метод:
GETЗапит параметрів:
int id - provider idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/providers/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get provider locations list
Return list of locations. (locations custom feature)
Please note that result is wrapped into paginated result.Кінцева точка:
/admin/locationsМетод:
GETВідповідь:
array|LocationEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/locations Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get services list
Return services list.
Please note that result is wrapped into paginated result.
In GET parameters you can pass filter (see http example) with following parameters:
search - search stringКінцева точка:
/admin/servicesМетод:
GETЗапит параметрів:
object filter - filter objectВідповідь:
array|ServiceEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/services?filter[search]=massage Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get service
Return service item by id.
Throws AccessDenied error in case user does not have access to service.
Throws NotFound error in case service is not found.Кінцева точка:
/admin/services/{id}Метод:
GETЗапит параметрів:
int id - service idВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/services/1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get products for service
Return list of products with default qty for selected service
In GET parameters you can pass filter (see http example) with following parameters:
service_id - service id
type - type. can be 'product'/'attribute'Кінцева точка:
/admin/services/productsМетод:
GETВідповідь:
ProductEntity">Service_ProductEntityПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/services/products?filter[service_id]=1 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get service categories list
Return list of categories. (categories custom feature)
Please note that result is wrapped into paginated result.Кінцева точка:
/admin/categoriesМетод:
GETВідповідь:
array|CategoryEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/categories Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get statuses list
Return user statuses list (status custom feature)Кінцева точка:
/admin/statusesМетод:
GETВідповідь:
array|StatusEntity[]Приклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/statuses Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Get ticket info by code
Return ticket info by code.
Throws AccessDenied error in case user does not have access to ticket.
Throws NotFound error in case ticket is not found.Кінцева точка:
/admin/tickets/{code}Метод:
GETЗапит параметрів:
string code - ticket codeВідповідь:
Повертає:
AccessDeniedNotFoundПриклад HTTP запиту:
GET https://user-api-v2.simplybook.me/admin/tickets/0z2ph7e716b88 Content-Type: application/json X-Company-Login: <insert your company login> X-Token: <insert your token from auth step>
-
Check in ticket
Check in ticket by code and return the ticket info.
Please note that the reason of unavailable check in will be in ticket object.
Throws AccessDenied error in case user does not have access to ticket.
Throws NotFound error in case ticket is not found.Кінцева точка:
/admin/tickets/{code}/check-inМетод:
PUTЗапит параметрів:
string code - ticket codeВідповідь:
Повертає:
AccessDeniedNotFound
Intake forms
Authentication
Bookings
Clients
membership_module
Notes and block time
Payments
Products/Service addons
Coupons & Gift Cards
Providers
Services
Status
Tickets
-
AdminLoginEntity
Entity that contains admin login information (input only)Ім'я Тип Опис company string Company name login string User login password string User password -
AdminLogin2FAEntity
Entity that contains admin login information for 2 FA (input only)Ім'я Тип Опис company string Company name -
AdminLogoutEntity
Entity that contains logout infoІм'я Тип Опис auth_token string Auth token -
TokenEntity
Entity that contains token informationІм'я Тип Опис token string Auth token company string Company login login string User login refresh_token string|null Refresh token (use it to get new access token when old expired) domain string|null Company domain require2fa bool Required two factor authorisation (token and refresh will be empty) allowed2fa_providers array|string[] Allowed providers (sms/ga) auth_session_id string Authentication session id (pass it with 2FA request) -
RefreshTokenEntity
Entity that contains refresh token informationІм'я Тип Опис company string Company login refresh_token string Refresh token device_token string|null Device token -
AdminBookingBuildEntity
Entity that contains information to make booking from admin sideІм'я Тип Опис start_datetime string Booking start datetime end_datetime string Booking end datetime location_id int Location id category_id int Category id service_id int Service id provider_id int Provider id client_id int Client id count int Group booking count. You can use either count or recurringSettings recurring_settings Booking_RecurringSettingsEntity Recurring settings. You can use either count or recurringSettings additional_fields array|Booking_AdditionalFieldValueEntity[] Array of additional fields values. Booking_AdditionalFieldValueEntity[] products array|ProductQtyEntity[] Array of products (addons). ProductQtyEntity[] client_membership_id int Client membership instance id. skip_membership bool Do not use membership for this booking user_status_id int Users status id accept_payment bool Set true to make payment order for booking payment_processor string|null Payment accepted by payment processor -
BookingResultEntity
Entity that contains booking result information.
Readonly entityІм'я Тип Опис bookings array|BookingEntity[] Array of bookings, that were booked. batch BookingBatchEntity|null Booking batch -
BookingEntity
Entity that contains booking informationІм'я Тип Опис id int Booking id. Auto-generated value. code string Booking code. Auto-generated value. is_confirmed bool Booking is confirmed start_datetime string Booking start datetime end_datetime string Booking end datetime location_id int Location id category_id int Category id service_id int Service id provider_id int Provider id client_id int Client id duration int Duration in minutes -
BookingBatchEntity
Entity that contains booking batch informationІм'я Тип Опис id int Batch id. Auto-generated value. type string Batch type. Can be 'recurring', 'multiple', 'group'. is_closed bool Flag that indicates that user has finished booking. -
Booking_RecurringSettingsEntity
Entity that contains booking recurring information.Ім'я Тип Опис days int Repeat days. Use each $days day for 'fixed' type and mask of week days for 'weekly' type. repeat_count int Repeat count type string Type of repeat. Can be 'fixed', 'weekly'
'weekly' means repeat every week day, that set in $days mask.
'fixed' means repeat every $days day.mode string Mode when it is impossible to book appointment on some date. Can be: 'skip', 'book_available', 'book_and_move'.
'skip' - Skip all bookings
'book_available' - book only on available dates
'book_and_move' - move to next date in case some date is not available -
Booking_AdditionalFieldValueEntity
Entity that contains additional field valueІм'я Тип Опис id int Additional field id field string Additional field name. value mixed Additional field value file_hash string Cloud field file hash -
ProductQtyEntity
Entity that contains product qty informationІм'я Тип Опис product_id int Product id qty int Product qty -
AdminBookingDetailsEntity
Detailed booking info. allowed only for admin API.Ім'я Тип Опис id int Booking id. Auto-generated value. code string Booking code. Auto-generated value. is_confirmed bool Booking is confirmed start_datetime string Booking start datetime end_datetime string Booking end datetime location_id int|null Provider location id category_id int|null Service category id service_id int Service id provider_id int Provider id client_id int Client id duration int Duration in minutes provider ProviderEntity Booking provider details entity service ServiceEntity Booking service details entity client ClientEntity Client details entity status string Booking status - confirmed/pending/canceled (depending on approve booking status and accept payment) membership_id int|null Client membership id invoice_id int|null Invoice id invoice_status string|null Booking payment status ('deleted', 'new', 'pending', 'cancelled', 'cancelled_by_timeout', 'error', 'paid') invoice_payment_received bool|null Payment was received invoice_number string|null Invoice number invoice_datetime string|null Invoice datetime invoice_payment_processor string|null Payment processor key ticket_code string|null Booking ticket code ticket_validation_datetime string|null Booking ticket validation date and time ticket_is_used bool|null Ticket was already validated testing_status string|null Medical testing status (positive/negative/inconclusive/pending or null) user_status_id int|null Status custom feature id category CategoryEntity|null Service category entity location LocationEntity|null Provider location entity can_be_edited bool Can this booking be edited by user can_be_canceled bool Can this booking be canceled by user log array|Booking_LogEntity[] Booking edit log additional_fields array|Booking_AdditionalFieldValueEntity[] Booking intake form details products array|Booking_DetailedProductQtyEntity[] Booking detailed products list attributes array|Booking_DetailedProductQtyEntity[] Booking detailed attributes list invoice AdminInvoiceEntity|null Invoice entity membership ClientMembershipPaymentEntity|null Client membership object user_status StatusEntity|null User status entity comment string Booking comment resources array|ResourceEntity[] Booking resources list -
AdminReportBookingEntity
Admin booking list info entity
Class AdminReportBookingEntityІм'я Тип Опис id int Booking id. Auto-generated value. code string Booking code. Auto-generated value. is_confirmed bool Booking is confirmed start_datetime string Booking start datetime end_datetime string Booking end datetime location_id int|null Provider location id category_id int|null Service category id service_id int Service id provider_id int Provider id client_id int Client id duration int Duration in minutes provider ProviderEntity Booking provider details entity service ServiceEntity Booking service details entity client ClientEntity Client details entity status string Booking status - confirmed/pending/canceled (depending on approve booking status and accept payment) membership_id int|null Client membership id invoice_id int|null Invoice id invoice_status string|null Booking payment status ('deleted', 'new', 'pending', 'cancelled', 'cancelled_by_timeout', 'error', 'paid') invoice_payment_received bool|null Payment was received invoice_number string|null Invoice number invoice_datetime string|null Invoice datetime invoice_payment_processor string|null Payment processor key ticket_code string|null Booking ticket code ticket_validation_datetime string|null Booking ticket validation date and time ticket_is_used bool|null Ticket was already validated testing_status string|null Medical testing status (positive/negative/inconclusive/pending or null) user_status_id int|null Status custom feature id category CategoryEntity|null Service category entity location LocationEntity|null Provider location entity can_be_edited bool Can this booking be edited by user can_be_canceled bool Can this booking be canceled by user -
Booking_DetailedProductQtyEntity
Booking product details info. Read only objectІм'я Тип Опис product_id int Product id qty int Product qty product ProductEntity Product entity -
Booking_LogEntity
Entity that contains booking log information. Readonly objectІм'я Тип Опис id int Id datetime string Log datetime type string Event type user_login string|null User login user_name string|null User name -
WorkDayEntity
Entity that contains work day informationІм'я Тип Опис date string Work day date time_from string Work day time from time_to string Work day time to is_day_off bool Is day off -
TimeSlotEntity
Entity that contains time slot informationІм'я Тип Опис date string Time slot date time string Time slot time -
Timeline_SlotsDateEntity
Entity for daily timelineІм'я Тип Опис date string Date slots Timeline_SlotEntity[] Slots -
Timeline_SlotEntity
Entity for daily timeline slotІм'я Тип Опис time string Time available_count int Available slots count total_count int Total slots count -
LocationEntity
Entity that contains location informationІм'я Тип Опис id int Location id. Auto-generated value. name string Location name description string|null Location description picture string Picture file name picture_preview string Path to preview picture providers array|int[] Location providers (list of ids) address1 string|null Location address 1 address2 string|null Location address 2 phone string|null Phone number city string|null Location city zip string|null Location zip code country_id string|null Location country id is_visible bool If location is visible on public side -
CategoryEntity
Entity that contains event category informationІм'я Тип Опис id int Category id. Auto-generated value. name string Category name services array|int[] Category services (list of ids) is_visible bool If category is visible on public side -
ProviderEntity
Entity that contains provider informationІм'я Тип Опис id int Provider id. Auto-generated value. name string Provider name qty int Provider capacity email string Provider email description string Provider description phone string Provider phone picture string Picture file name picture_preview string Path to preview picture color string Provider color is_active bool If provider is active is_visible bool If provider is visible on public site services array|int[] Array of ids of services where this provider connected. -
ServiceEntity
Entity that contains service informationІм'я Тип Опис id int Service id. Auto-generated value. name string Service name description string Promotion description price float Service price currency string Service price currency tax_id int Tax id tax TaxEntity Tax information duration int Duration in minutes buffer_time_after int Buffer time after in minutes recurring_settings Booking_RecurringSettingsEntity|null Service recurring settings (in case it is recurring service) memberships array|int[] Array of ids of memberships where this service presents. providers array|int[] Array of ids of providers where this service connected. picture string Picture file name picture_preview string Path to preview picture is_active bool If service is active is_visible bool If service is visible on public side limit_booking int Limit bookings value.
Will be null in case "Limit bookings" is turned off.
Will take common value from config in case this value is empty or 0 for event.min_group_booking int Min group booking value.
Will be null in case "Group booking" is turned off. -
Service_ProductEntity
Product information for service (with default qty info)Ім'я Тип Опис product ProductEntity Product qty int Qty -
StatusEntity
User status entityІм'я Тип Опис id int Status id. Auto-generated value. name string Status name. description string Status description. color string Status color is_default bool Is status default -
ResourceEntity
Resource infoІм'я Тип Опис id int Resource id name string Resource name -
ClientEntity
Entity that contains client informationІм'я Тип Опис id int Client id. Auto-generated value. name string Client name email string Client email phone string Client phone -
Client_FieldDetailsEntity
Client field details infoІм'я Тип Опис id string Field id title string Field title default_value mixed Default field value values array|Client_FieldSelectOptionEntity[] Array of available values for select field is_visible bool Field is visible on public site is_optional bool Field is optional type string Field type -
Client_DetailsEntity
Client data each field value is in separate [[Client_FieldValueEntity]] object.Ім'я Тип Опис id int Id of client fields array|Client_FieldValueEntity[] Array of fields with values -
Client_FieldSelectOptionEntity
Option data for select client fieldІм'я Тип Опис value string Option value is_default bool Is default value position int Position -
Client_FieldValueEntity
Client field value objectІм'я Тип Опис id string Field id field Client_FieldDetailsEntity Field object. Read only (you do not need to pass it on save) value mixed Field value -
UserEntity
Entity that contains user information.
This entity will be returned only by admin APIІм'я Тип Опис id int User id. Auto-generated value. login string User login firstname string User first name lastname string User last name email string User email phone string User phone company CompanyEntity User company -
CompanyEntity
Entity that contains company information.
This entity will be returned only by admin APIІм'я Тип Опис login string Company login name string Company name dashboard_url string Dashboard company url public_url string Public company url -
AdditionalFieldEntity
Intake forms field informationІм'я Тип Опис id int Field id name string Unique field name field_name string Field label field_type string Field type field_options array Field options default_value mixed Default field value optional bool Is optional field is_visible bool Is visible on public site show_for_all_services bool Show field for all services -
ProductEntity
Entity that contains product informationІм'я Тип Опис id int Product id. Auto-generated value. name string Product name barcode string Product barcode description string Product description type string Product type. It can be 'product' or 'attribute' price float Product price currency string Product currency tax_id int Tax id tax TaxEntity Tax information duration int Product duration -
AdminInvoiceEntity
Extended invoice entity with client information and
other information that available only for adminІм'я Тип Опис id int Invoice id. Auto-generated value. number string Invoice number. Auto-generated value. datetime string Invoice datetime. Readonly due_datetime string Invoice due date. By default current datetime + payment timeout payment_datetime string|null Payment payment date refund_datetime string|null Refund payment date amount float Invoice amount. Readonly recurring_amount float Invoice recurring amount. Readonly deposit float Invoice deposit. Readonly rest_amount float Invoice rest amount. Readonly taxes array|TaxEntity">Invoice_TaxEntity[] Array of invoice taxes discount float Invoice discount amount. Readonly currency string Invoice currency code. ISO 4217 client_id int Client id description string Invoice description payment_received bool Payment was received by company payment_processor string Payment processor key lines array Array of lines. The line can be one of the following types:
Invoice_BookingLineEntity, Invoice_ProductLineEntity, Invoice_MembershipLineEntity, Invoice_PackageLineEntity, Invoice_PromotionLineEntity, Invoice_DepositLineEntitypromotion_instances array|PromotionInstanceEntity[] Array of PromotionInstanceEntity. Promotion instances used in invoice package_instances array|PackageInstanceEntity[] Array of PackageInstanceEntity. Package instances used in invoice status string Current invoice status support_recurring_payment bool True in case this invoice can be payed with recurring payment method require_recurring_payment bool True in case this invoice can be payed only with recurring payment method recurring_profile_id int Recurring profile id, linked to this invoice client AdminClientEntity Client created_by_user_id int User ID that created invoice created_by_user UserEntity User object that created invoice approved_by_user_id int User ID that receive payment (for manual and delay payments) approved_by_user UserEntity User object that receive payment (for manual and delay payments) refunded_by_user_id int User ID that refunded payment refunded_by_user UserEntity User object that refunded payment -
Invoice_BookingLineEntity
Entity that contains invoice line information with bookingsІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount booking_ids array Booking ids, that were purchased. It can have multiple ids in case
recurring booking and group booking. In case recurring booking qty will be equal 1,
because client pays for session.
In case group booking qty will be equal count of group booking.bookings array|BookingEntity[] Bookings, that were purchased -
Invoice_ProductLineEntity
Entity that contains invoice line information with productІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount product_id int Product id, that was purchased booking_id int Related booking id product ProductEntity Product, that was purchased -
Invoice_MembershipLineEntity
Entity that contains invoice line information with membershipІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount membership_id int Membership entity object id membership MembershipEntity Membership data period_start string Optional period start of membership membership_payment_id int Membership payment id, that was initialized by client -
Invoice_PackageLineEntity
Entity that contains invoice line information with packageІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount package_id int Package entity object id package PackageEntity Package data period_start string Optional period start of membership package_instance_id int Membership payment id, that was initialized by client -
Invoice_PromotionLineEntity
Entity that contains invoice line information with gift cardІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount promotion_id int Gift card id promotion_instance_id int Gift card instance id promotion PromotionEntity Gift card -
Invoice_DepositLineEntity
Entity that contains invoice line information with bookingsІм'я Тип Опис id int Invoice line id. Auto-generated value. invoice_id int Invoice id name string Invoice line name type string Invoice line type. Can be booking, product, membership, custom discount_ratio float Invoice line discount ratio discount_amount float Invoice line discount fixed amount discount float Invoice line discount price float Invoice line price final_price float Invoice line final price (including tax and discount) qty float Invoice line qty package_qty float Invoice line qty, that was purchased by using package tax TaxEntity Tax entity related to this invoice line
Note: Use tax_rate in calculations as rate in this object can be different.tax_ratio float Invoice line tax ratio tax_amount float Invoice line tax amount amount float Invoice line amount deposit float Invoice line deposit rest_amount float Invoice line rest amount booking_ids array Booking ids, that were purchased. It can have multiple ids in case
recurring booking and group booking. In case recurring booking qty will be equal 1,
because client pays for session.
In case group booking qty will be equal count of group booking.bookings array|BookingEntity[] Bookings, that were purchased -
Invoice_TaxEntity
Entity that contains invoice tax amount informationІм'я Тип Опис id int Tax id. Auto-generated value. name string Tax name ratio float Tax ratio is_default bool Is default tax amount float Tax amount -
ClientMembershipPaymentEntity
Entity that contains client membership payment information. When this membership starts, ends, rest of bookings, etc.Ім'я Тип Опис id int Membership payment id. Auto-generated value. client_id int Client id period_start string Membership start date period_end string Membership end date created string Membership payment created date membership_id int Membership id membership MembershipEntity Membership object rest int Membership rest simultaneous_rest int Membership simultaneous rest count int Used bookings from membership can_be_used bool Membership start date is_expired bool Is membership expired invoice_id int Invoice id, where this membership was purchased invoice_number string Invoice number, where this membership was purchased invoice_datetime string Invoice datetime, where this membership was purchased recurring_profile_id int Recurring profile id for invoice with this membership recurring_profile_status string Recurring profile status for invoice with this membership status string Current client membership status bookings array|BookingEntity[]|null Membership bookings array -
PromotionInstanceEntity
Entity that contains promotion instance informationІм'я Тип Опис id int Promotion instance id. Auto-generated value. promotion PromotionEntity Promotion information start_date string Promotion instance start date expired_date string Promotion instance expire date is_used bool Returns true if this promotion was used already can_be_used bool Returns true if this promotion was used already can_be_used_count int Returns how many times left. In case this value is -1 then can be used unlimited times. code string Promotion instance code client_id int Client id -
PackageInstanceEntity
Entity that contains package instance informationІм'я Тип Опис id int Package instance id. Auto-generated value. client_id int Client id created string Package instance created date period_start string Package start date period_end string Package end date status string Package status can_be_used bool If package can be used is_used bool If package was totally used package_id int Package id package PackageEntity Package object services array|Package_PackageServiceEntity[] Warning!
This is used services for invoice package instances or
rest of services in the package instance for package instance detailsproducts array|Package_PackageProductEntity[] Warning!
This is used products for invoice package instances or
rest of products in the package instance for package instance detailspaid_attributes array|Package_PackageProductEntity[] Warning!
This is used attributes for invoice package instances or
rest of attributes in the package instance for package instance detailscount_used_package_instance int How many times packages used -
PackageEntity
Entity that contains package informationІм'я Тип Опис id int Package id. Auto-generated value. name string Package name description string Package description position int Package position file_id int Image file id picture string Picture file name picture_path string Picture path picture_preview string Path to preview picture picture_large string Path to large picture price float Package price currency string Package price currency tax_id int Tax id tax TaxEntity Tax information duration int Package duration duration_type string Package duration type sales_limit int Package sales limit sold int Sold packages count can_be_purchased bool If client can purchase this package is_active bool Is package active is_visible bool Is package visible on public site services array|Package_PackageServiceEntity[] Array of connected services (Package_PackageServiceEntity[]) products array|Package_PackageProductEntity[] Array of connected products (Package_PackageProductEntity[]) paid_attributes array|Package_PackageProductEntity[] Array of connected paid attributes (Package_PackageProductEntity[]) has_instances bool If package has generated instances already is_use_package_limit bool Is use package limit package_limit int Package limit -
Package_PackageServiceEntity
Package service qty intoІм'я Тип Опис id int Package service entity id. Auto-generated value. service_id int Service id qty int Qty in package name string Service name is_visible bool Is visible -
Package_PackageProductEntity
Package product qty intoІм'я Тип Опис id int Package service entity id. Auto-generated value. product_id int Product id qty int Qty in package name string Name of product is_visible bool Is visible -
PromotionEntity
Entity that contains promotion informationІм'я Тип Опис id int Promotion id. Auto-generated value. name string Promotion name description string Promotion description file_id int Image file id picture_preview string Path to preview picture picture_large string Path to large picture is_visible bool Is promotion visible on public site is_active bool Is promotion active position int Promotion position price float Promotion price to purchase (gift card) currency string Promotion price currency to purchase (gift card) tax TaxEntity Promotion tax promotion_type string Promotion type. Can be 'gift_card', 'discount' discount_type string Discount type. Can be 'fixed_amount', 'percentage'
fixed_amount is discount for fixed amount.
percentage is percentage discount.discount float Discount value (amount value or percentage value) duration_type string Duration type for gift cards ('year', 'month', 'week', 'day') duration int Duration length client_type string Client type can be 'new' or 'all' allow_usage_count int Limit of usage count is_unlimited bool Is unlimited affect_services bool Is it possible to apply this promotion to services? affect_products bool Is it possible to apply this promotion to products? affect_paid_attributes bool Is it possible to apply this promotion to paid attribute? affect_memberships bool Is it possible to apply this promotion to memberships? affect_packages bool Is it possible to apply this promotion to packages? service_restrictions array|int[] Array of services ids to which you can apply promotion booking_restrictions array|Promotion_BookingRestrictionEntity[] Array of Promotion_BookingRestrictionEntity product_restrictions array|int[] Array of product ids to which you can apply promotion paid_attribute_restrictions array|int[] Array of paid attributes ids to which you can apply promotion memberships_restrictions array|int[] Array of memberships ids to which you can apply promotion package_restrictions array|int[] Array of packages ids to which you can apply promotion -
Promotion_BookingRestrictionEntity
Booking promotion restrictions infoІм'я Тип Опис id int Restriction id. Auto-generated value. start_date string Start date when promotion affects booking end_date string End date when promotion affects booking start_time string Start time when promotion affects booking end_time string End time when promotion affects booking -
TaxEntity
Entity that contains tax informationІм'я Тип Опис id int Tax id. Auto-generated value. name string Tax name ratio float Tax ratio is_default bool Is default tax -
MembershipEntity
Entity that contains membership informationІм'я Тип Опис id int Membership id. Auto-generated value. name string Membership name description string Membership description file_id int Image file id picture_preview string Path to preview picture picture_large string Path to large picture first_price float Price that client will when he first time buys membership recurring_price float Price that client will when he buy membership not first time currency string Membership price currency is_recurring bool Is membership supporting recurring payment tax_id int Tax id tax TaxEntity Tax information duration int Membership duration duration_type string Membership duration type limit int How many booking in this membership (0 - unlimited) simultaneous_limit int Maximum number of active future bookings per client is_unlimited bool Has unlimited bookings is_active bool Is membership active is_visible bool Is membership visible on public site -
CalendarNoteEntity
Calendar note infoІм'я Тип Опис id int Calendar note id provider_id int Provider id (optional) service_id int Service id (optional) provider ProviderEntity Provider data (optional). Read only. service ServiceEntity Service data (optional). Read only. start_date_time string Note start date and time end_date_time string Note end date and time note_type_id int Note type id note_type CalendarNoteTypeEntity Note type object. Read only. note string Note body mode string Note mode (service/provider/all) time_blocked bool Time is blocked -
CalendarNoteTypeEntity
Calendar note type ojectІм'я Тип Опис id int Note type id name string Note type name color string Note type color is_default bool Type is default position int Note type position -
AdminTicketEntity
Detailed ticket information objectІм'я Тип Опис id int Ticket identifier created string When ticket was created is_used bool Is ticket already used used_datetime string Ticket checked in datetime code string ticket code booking_id int Booking id booking AdminBookingDetailsEntity Booking details client_id int Client id template_id int Ticket template id is_active bool Ticket is active check_in_allowed bool Check in is allowed processed bool Ticket has been processed within this request unavailable_check_in_reason string In case check in is unavailable the reason can be
'ticket_error_too_early', 'ticket_error_too_late', 'ticket_error_validated', 'ticket_error_inactive'check_in_date_time_from string Allowed checkin datetime from check_in_date_time_to string Allowed checkin datetime to -
Calendar_DataEntity
Calendar info objectІм'я Тип Опис from string Work day from time to string Work day to time columns array|Calendar_ColumnEntity[] Columns array -
Calendar_ColumnEntity
Calendar column dataІм'я Тип Опис id int Column object id name string Column name date string Column date type string Column type from string Column work time from to string Column work time to is_day_off bool Is day off for this day is_special_day bool Is special day breaktimes array|Calendar_TimePeriodEntity[] Breaktimes array blocked array|Calendar_TimePeriodEntity[] Blocked time array bookings array|Calendar_BookingEntity[] Calendar events array notes array|Calendar_NoteEntity[] Calendar notes array -
Calendar_TimePeriodEntity
Time period objectІм'я Тип Опис from string Time from to string Time to -
Calendar_BookingEntity
Calendar booking infoІм'я Тип Опис id int Booking object id service_name string Service name service_id int Service id provider_name string Provider name provider_color string Provider color provider_id int Provider id client_name string Client name client_email string Client email client_phone string Client phone client_id int Client id from string Booking datetime from to string Booking datetime to status string Booking status invoice_id int Invoice id invoice_status string Invoice status invoice_payment_received bool Payment was received user_status StatusEntity User status duration int Duration in minutes -
Calendar_NoteEntity
Note calendar infoІм'я Тип Опис id int Note object id note string Note note_type CalendarNoteTypeEntity Note type time_blocked bool Time is blocked service_name string Service name service_id int Service id provider_name string Provider name provider_id int Provider id from string Note datetime from to string Note datetime to -
AdminPromotionIssueGiftCardEntity
Request to issue gift cardsІм'я Тип Опис promotion_id int Gift card id start_date string Gift card start date personalized bool Gift card type personalized/non-personalized send_email bool|null Send email (for personalized cards only) send_sms bool|null Send sms (for personalized cards only) email_subject null|string Email subject (for personalized cards only) email_body null|string Email body (for personalized cards only) sms_body null|string SMS body (for personalized cards only) clients array|int[] Client ids (for personalized cards only) count null|int Count of non-personalized gift cards
Типи
Чому тисячі клієнтів обирають API від SimplyВook.me?
Чіткий і простий інтерфейс. Створити власну систему бронювання дуже просто
Ви можете легко підключити усі необхідні функції
Планування в режимі реального часу - Ваші клієнти можуть бронювати зустрічі де завгодно, коли завгодно
Наша програма надає Вам багато додаткових функцій. Натисніть тут щоб дізнатись більше про наші додаткові функції.
Нехай ваші клієнти бронюють послуги, не покидаючи Вашу програму!
Зробіть свій веб-сайт або додаток релевантнішими, привабливішими та прибутковішими, запропонувавши опції, які необхідні вашим клієнтам, ознайомлюючись з місцевим бізнесом. Наш API дозволяє легко включати кнопку 'Забронювати зараз' безпосередньо на веб-сторінці, що дозволяє Вашим клієнтам планувати зустрічі в режимі реального часу, вдень або вночі.
Наш API надає Вам доступ до всіх даних бронювання, необхідних для створення та налаштовування можливостей бронювання для Вашої аудиторії клієнтів.
Надаючи клієнту доступ до Вашого розкладу, ми створюємо абсолютно новий рівень комерції. Ми вважаємо, що безпосереднє бронювання послуг у Вашому додатку чи веб-сайті дозволяє направити до Вас справжніх клієнтів, а не лише потенційних.