User API guide/uk: Difference between revisions

Created page with "Наступним кроком для клієнта є вибір дати та часу надання послуги. У прикладі використання API ми використовували календар Bootstrap, але ви можете використовувати цей або будь-який інший календар. Щоб встановити першу дату календаря, скористайтеся методом getFirstWorki..."
No edit summary
 
(30 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{#seo: |title=Посібник користувача API - SimplyBook.me |description=Використовуйте API користувача SimplyBook.me для створення розширених інтеграцій. Дотримуйтесь нашого посібника для безпроблемного впровадження. Дізнайтеся більше тут! |titlemode=додати |keywords=fAQ, поширені запитання, програмне забезпечення для бронювання, запитання щодо системи бронювання, онлайн-бронювання, програмне забезпечення для календаря, система бронювання, календар бронювання, програмне забезпечення для планування, онлайн-планування зустрічей, онлайн-планування, плагіни, настроювані функції, посилання на настроювану сторінку бронювання, доменне ім'я, настроюване доменне ім'я, настроювана URL-адреса }}
{{#seo: |title=Посібник користувача API - SimplyBook.me |description=Використовуйте API користувача SimplyBook.me для створення розширених інтеграцій. Дотримуйтесь нашого посібника для безпроблемного впровадження. Дізнайтеся більше тут! |titlemode=додати |keywords=fAQ, поширені запитання, програмне забезпечення для бронювання, запитання щодо системи бронювання, онлайн-бронювання, програмне забезпечення для календаря, система бронювання, календар бронювання, програмне забезпечення для планування, онлайн-планування зустрічей, онлайн-планування, плагіни, настроювані функції, посилання на настроювану сторінку бронювання, доменне ім'я, настроюване доменне ім'я, настроювана URL-адреса }}
<br><be>
<br><br>


Використовуйте наш API для розробників, щоб створити власний інтерфейс бронювання. Ви можете розробити будь-яке рішення, від найпростішого віджета до багатофункціонального додатка з функціоналом, налаштованим відповідно до специфіки вашого бізнесу.
Використовуйте наш API для розробників, щоб створити власний інтерфейс бронювання. Ви можете розробити будь-яке рішення, від найпростішого віджета до багатофункціонального додатка з функціоналом, налаштованим відповідно до специфіки вашого бізнесу.
Line 8: Line 8:


Перегляньте [https://simplybook.me/api_example/index.html приклад інтерфейсу бронювання на основі API], а також ознайомтеся [https://simplybook.me/api_example/scheduler.js з вихідним кодом] цього рішення.
Перегляньте [https://simplybook.me/api_example/index.html приклад інтерфейсу бронювання на основі API], а також ознайомтеся [https://simplybook.me/api_example/scheduler.js з вихідним кодом] цього рішення.
<br><br><be>
<br><br><br>
 




Line 16: Line 15:
Для використання методів Simplybook API необхідна автентифікація. Для авторизації в Simplybook API вам потрібно отримати ключ доступу — access-token. Щоб отримати цей access-token, ви повинні викликати метод JSON-RPC getToken на сервісі https://user-api.simplybook.me/login, передавши свій особистий API-ключ. Ви можете скопіювати свій API-ключ в адміністративному інтерфейсі: перейдіть за посиланням «Custom Features» (Налаштування) і виберіть «API Custom Feature» (Налаштування API). Потім потрібно ініціювати віддалений доступ до Simplybook API. Ваш запит повинен містити такі заголовки: «X-Company-Login», «X-Token».
Для використання методів Simplybook API необхідна автентифікація. Для авторизації в Simplybook API вам потрібно отримати ключ доступу — access-token. Щоб отримати цей access-token, ви повинні викликати метод JSON-RPC getToken на сервісі https://user-api.simplybook.me/login, передавши свій особистий API-ключ. Ви можете скопіювати свій API-ключ в адміністративному інтерфейсі: перейдіть за посиланням «Custom Features» (Налаштування) і виберіть «API Custom Feature» (Налаштування API). Потім потрібно ініціювати віддалений доступ до Simplybook API. Ваш запит повинен містити такі заголовки: «X-Company-Login», «X-Token».


Отримання токена доступу можна реалізувати як з боку клієнта, так і з боку вашого сервера, що є більш безпечним рішенням.


Отримання токена доступу можна реалізувати як з боку клієнта, так і з боку вашого сервера, що є більш безпечним рішенням.


Ви можете використовувати [https://simplybook.me/api_example/json-rpc-client.js бібліотеку javascript JSON-RPC-client] та [https://simplybook.me/api_example/JsonRpcClient.zip бібліотеку php JSON-RPC-client] з наших прикладів для розробки власних рішень.
Ви можете використовувати [https://simplybook.me/api_example/json-rpc-client.js бібліотеку javascript JSON-RPC-client] та [https://simplybook.me/api_example/JsonRpcClient.zip бібліотеку php JSON-RPC-client] з наших прикладів для розробки власних рішень.
Line 26: Line 24:




 
= '''CLIENT API ([https://simplybook.me/api/doc#/admin ADMIN]) АВТОРИЗАЦІЯ''' =
<div class="mw-translate-fuzzy">
= '''CLIENT API ([https://simplybook.me/api/doc#/admin ДЕРЖАВНА СЛУЖБА]) АВТОРИЗАЦІЯ''' =
<br><br>
<br><br>
== '''Авторизація з боку клієнта''' ==
== '''Авторизація з боку клієнта''' ==
Line 66: Line 62:
));</nowiki>
));</nowiki>
<br><br><br>
<br><br><br>
<div class="mw-translate-fuzzy">
= '''АВТОРИЗАЦІЯ API КОРИСТУВАЧА/АДМІНІСТРАТОРА ([https://simplybook.me/api/doc#/admin СЛУЖБА АДМІНІСТРУВАННЯ КОМПАНІЇ]''' =
= '''АВТОРИЗАЦІЯ API КОРИСТУВАЧА/АДМІНІСТРАТОРА ([https://simplybook.me/api/doc#/admin СЛУЖБА АДМІНІСТРУВАННЯ КОМПАНІЇ]''' =
<br><br>
<br><br>
Line 78: Line 76:
var token = loginClient.getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
var token = loginClient.getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
<br><br>
<br><br>
'''Ініціалізація JSON-RPC-клієнта.'''
</div>
 
'''Ініціалізація JSON-RPC-клієнта'''.
<br><br>
<br><br>
  <nowiki>this.client = new JSONRpcClient({
  <nowiki>this.client = new JSONRpcClient({
Line 89: Line 89:
});</nowiki>
});</nowiki>
<br><br>
<br><br>
== '''Авторизація з боку сервера''' ==
 
== '''Авторизація з боку серверного коду''' ==
<br><br>
<br><br>
'''Отримання токен-ключа.'''
'''Отримання токен-ключа.'''
Line 104: Line 105:
)
)
));</nowiki>
));</nowiki>
<br><br><be>
<br><br><br>
</div>
 
 


= '''ОТРИМАННЯ ДАНИХ З СЕРВЕРА SIMPLYBOOK''' =
= '''ОТРИМАННЯ ДАНИХ З СЕРВЕРА SIMPLYBOOK''' =
<br><br>
<br><br>
Сторінка бронювання зазвичай є сторінкою, на якій клієнти вибирають необхідну послугу, співробітника та час зустрічі. Потім клієнт вводить контактну інформацію та підтверджує бронювання. Більш складні рішення можуть включати заповнення різних форм, створення групових або багаторазових бронювань тощо. Опишемо робочий процес створення найпростішої сторінки бронювання. Якщо вам потрібно додати додаткові функції на свою сторінку, перегляньте повний список [https://simplybook.me/api/doc методів API Simplybook].
Сторінка бронювання зазвичай є сторінкою, на якій клієнти вибирають необхідну послугу, співробітника та час зустрічі. Потім клієнт вводить контактну інформацію та підтверджує бронювання. Більш складні рішення можуть включати заповнення різних форм, створення групових або багаторазових бронювань тощо. Опишемо робочий процес створення найпростішої сторінки бронювання. Якщо вам потрібно додати додаткові функції на свою сторінку, перегляньте повний список [https://simplybook.me/api/doc методів API Simplybook].


Отже, перше, що ви повинні відобразити, це список послуг та список співробітників. Отримайте ці дані за допомогою методів getEventList та getUnitList. Обидва вони повертають список з повною інформацією про кожен елемент, що міститься в ньому, тому у вас є багато можливостей для відображення послуг та співробітників на вашій сторінці. Щоб здійснити фільтрацію співробітників, використовуйте властивість unit_map списку послуг, яка містить інформацію про співробітників, які можуть надати вибрану послугу.
Отже, перше, що ви повинні відобразити, це список послуг та список співробітників. Отримайте ці дані за допомогою методів getEventList та getUnitList. Обидва вони повертають список з повною інформацією про кожен елемент, що міститься в ньому, тому у вас є багато можливостей для відображення послуг та співробітників на вашій сторінці. Щоб здійснити фільтрацію співробітників, використовуйте властивість unit_map списку послуг, яка містить інформацію про співробітників, які можуть надати вибрану послугу.
<br><be>
<br><br>
 
 


'''Приклад коду для отримання списку послуг'''
'''Приклад коду для отримання списку послуг'''
<br><br>
<br><br>
  <nowiki>$services = $client-&gt;getEventList();
  <nowiki>$services = $client-&gt;getEventList();
// повертає масив (array(
// повертає масив(array(
//    'id' =&gt; 1, - ідентифікатор послуги
//    'id' =&gt; 1, - ідентифікатор послуги
//    'name' =&gt; 'Service 1', - назва послуги
//    'name' =&gt; 'Service 1', - назва послуги
Line 136: Line 130:
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><br>
<br><br>
'''Приклад коду для отримання списку виконавців послуг'''
'''Приклад коду для отримання списку виконавців послуг'''
<br><br>
<br><br>
  <nowiki>$services = $client-&gt;getUnitList();
  <nowiki>$services = $client-&gt;getUnitList();
// повертає масив(array(
// повертає масив (array(
//    'id' =&gt; 1, - ідентифікатор виконавця
//    'id' =&gt; 1, - ідентифікатор виконавця
//    'name' =&gt; 'Provider 1', - ім'я виконавця
//    'name' =&gt; 'Provider 1', - ім'я виконавця
Line 152: Line 147:
//    'qty' =&gt; 1, кількість виконавців
//    'qty' =&gt; 1, кількість виконавців
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><be>
<br><br>
 
 


Наступним кроком для клієнта є вибір дати та часу надання послуги. У прикладі використання API ми використовували календар Bootstrap, але ви можете використовувати цей або будь-який інший календар. Щоб встановити першу дату календаря, скористайтеся методом getFirstWorkingDay. Він може приймати ідентифікатор співробітника як параметр і повертає наступну дату, коли вибраний співробітник (або будь-який співробітник компанії за замовчуванням) доступний для бронювання. Щоб показати часові слоти в межах вибраної дати, вам потрібні методи getWorkCalendar і getStartTimeMatrix. Перший метод надає інформацію про початок і кінець робочого дня, а також про вихідні дні. Другий метод повертає список часових слотів, які можна забронювати на певну дату.
Наступним кроком для клієнта є вибір дати та часу надання послуги. У прикладі використання API ми використовували календар Bootstrap, але ви можете використовувати цей або будь-який інший календар. Щоб встановити першу дату календаря, скористайтеся методом getFirstWorkingDay. Він може приймати ідентифікатор співробітника як параметр і повертає наступну дату, коли вибраний співробітник (або будь-який співробітник компанії за замовчуванням) доступний для бронювання. Щоб показати часові слоти в межах вибраної дати, вам потрібні методи getWorkCalendar і getStartTimeMatrix. Перший метод надає інформацію про початок і кінець робочого дня, а також про вихідні дні. Другий метод повертає список часових слотів, які можна забронювати на певну дату.
<br><be>
<br><br>
 
'''Приклад коду для отримання інформації про робочі дні'''
 
<br><br>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting work days info'''
<br><br>
  <nowiki>$year = 2015;
  <nowiki>$year = 2015;
$month = 3; // March
$month = 3; // березень
$performerId = 1; // Can be null
$performerId = 1; // може бути нульовим
$workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
$workDaysInfo = $client-&gt;getWorkCalendar($year, $month, $performerId);
// returns array(
// повертає масив (
//    '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    '2015-03-01' =&gt; array('from' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    '2015-03-02' =&gt; array('from' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    ...
//    ...
//);</nowiki>
//);</nowiki>
<br><be>
<br><br>
</div>
'''Приклад коду для отримання матриці часу початку'''
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting start time matrix'''
<br><br>
<br><br>
  <nowiki>$dateFrom = '2015-03-03';
  <nowiki>$dateFrom = '2015-03-03';
Line 186: Line 171:
$performerId = 1;
$performerId = 1;
$qty = 1;
$qty = 1;
$availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
$availableTime = $client-&gt;getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
// returns array(
// повертає масив (
//    '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-03' =&gt; array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' =&gt; масив('09:00:00', '09:30:00', '10:00:00', ....),
//);</nowiki>
//);</nowiki>
<br><be>
<br><br>
</div>


 
Інший корисний метод, який може вам знадобитися, — calculateEndTime. Кожна послуга може мати свою тривалість, а також співробітники вашої компанії можуть мати різний графік роботи в різні дні. Тож за допомогою цього методу ви можете правильно показати клієнту дату та час закінчення послуги, яку він забронював.
 
<br><br>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Приклад коду для розрахунку часу закінчення бронювання'''
Another usefull method you may need is calculateEndTime. Each service can have its own duration, also your company's employees possible have different work schedule form day to day. So using this method you can show to a client an end date and time of the service he've booked in a correct way.
<br><be>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of calculating booking end time'''
<br><br>
<br><br>
  <nowiki>$startDateTime = '2015-03-03 09:00:00';
  <nowiki>$startDateTime = '2015-03-03 09:00:00';
$serviceId = 1;
$serviceId = 1;
$performerId = 1;
$performerId = 1;
$availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
$availableTime = $client-&gt;calculateEndTime($startDateTime, $serviceId, $performerId);
// returns '2015-03-03 10:00:00'
// повертає '2015-03-03 10:00:00'
</nowiki>
</nowiki>
<br><be>
<br><br>
</div>


Коли клієнт натискає кнопку «Підтвердити бронювання», ви повинні викликати метод book. Це основна функція, яка виконує всі необхідні перевірки та реєструє нове бронювання в системі Simplybook. Вона бере інформацію про бронювання, дані клієнта, такі як ім'я та телефон, а також деякі додаткові параметри. Дивіться опис всіх параметрів цього методу в [https://simplybook.me/api/doc списку функцій API]. Відповідь методу book містить унікальний код та інші деталі нового бронювання або список помилок, якщо виникли проблеми, тому ви можете використовувати цю інформацію, щоб показати результат бронювання клієнту в зручний та інтуїтивно зрозумілий спосіб.
<br><br><br>


 
= '''ВИКОРИСТАННЯ СЕКРЕТНОГО КЛЮЧА API''' =
<div lang="en" dir="ltr" class="mw-content-ltr">
<br><br>
When a client clicks confirm booking button you have to call book method. This is the main function which performs all necessary validations and registers a new booking in Simplybook system. It takes information about booking, client data like name and phone and some additional params. See all params descriptions of this method in [https://simplybook.me/api/doc API functions list]. The book method responce contains an uniqe code and other details of the new booking or the list of errors if some problems occured, so you can use this information to show booking result to a client in convinient and intuitive way.
У деяких випадках метод бронювання може вимагати підтвердження, наприклад, якщо ви приймаєте платежі від клієнтів, ви підтверджуєте бронювання тільки після того, як платіж вже надійшов. Метод Simplybook API confirmBookng приймає ідентифікатор бронювання та безпечний підпис як параметри (інший метод, який вимагає безпечного підпису, - cancelBookng). Для генерації безпечного підпису слід використовувати ваш секретний ключ API. Дивіться, як це можна зробити, у прикладі нижче. Секретний ключ можна знайти в адміністративному інтерфейсі за посиланням «Налаштування» в розділі «Налаштування API» у списку «Налаштування».
<br><br><be>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
='''USING OF API SECRET KEY'''=
<br><br>
<br><br>
In some cases the book method may require the confirmation, e.g. if your accept payments from clients you confirm booking only after the payment is already came. The Simplybook API confirmBookng method takes booking-id and secure signature as params (another method which requires secure signature is cancelBookng). For the secure signature generation your secret API-key should be used. See how it can be done in the example below. You can find the secret key at admin interface under 'Settings' link of API Custom Feature in 'Custom Features' list.
<br><be>
</div>


 
'''Приклад коду бронювання послуги та її підтвердження за допомогою секретного API-ключа'''
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of service booking and its confirmation using secret API key'''
<br><br>
<br><br>
  <nowiki>$additionalFields = array(
  <nowiki>$additionalFields = array(
'6740d3bce747107ddb9a789cbb78abf3' => 'value1',  
'6740d3bce747107ddb9a789cbb78abf3' =&gt; 'value1',  
'b0657bafaec7a2c9800b923f959f8163' => 'value2'
'b0657bafaec7a2c9800b923f959f8163' =&gt; 'value2'
);
);
$clientData = array(
$clientData = array(
'name' => 'Client name',
'name' =&gt; 'Ім'я клієнта',
'email' => 'client@email.com',
'email' =&gt; 'client@email.com',
'phone' => '+13152108338'
'phone' =&gt; '+13152108338'
);
);
$bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
$bookingsInfo = $client-&gt;book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
if ($bookingsInfo-&gt;require_confirm) {
if ($bookingsInfo->require_confirm) {
foreach ($bookingsInfo-&gt;bookings as $booking) {
  foreach ($bookingsInfo->bookings as $booking) {
$sign = md5($booking-&gt;id . $booking-&gt;hash . YOUR_API_SECRET_KEY);
  $sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
$result = $client-&gt;confirmBooking($booking-&gt;id, $sign);
  $result = $client->confirmBooking($booking->id, $sign);
echo '
  echo '
Confirm result
Confirm result
';
';
  var_dump($result);
var_dump($result);
    }
}
}</nowiki>
}</nowiki>
<br><be>
<br><br>
</div>


 
'''Приклад коду для отримання форм для введення даних'''
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting intake forms'''
<br><br>
<br><br>
  <nowiki>$fields = $client->getAdditionalFields($eventId);
  <nowiki>$fields = $client-&gt;getAdditionalFields($eventId);
// returns - array(array(
// повертає - масив(масив(
// 'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
// 'name' =&gt; 'b0657bafaec7a2c9800b923f959f8163', - назва поля
// 'title' => 'Test digits', - field title
// 'title' =&gt; 'Test digits', - назва поля
// 'type' => 'digits', - field type
// 'type' =&gt; 'digits', - тип поля
// 'values' => null, - available values for select field type
// 'values' =&gt; null, - доступні значення для поля типу select
// 'default' => null, - default value for field
// 'default' =&gt; null, - значення за замовчуванням для поля
// 'is_null' => null, - is filed nullable
// 'is_null' =&gt; null, - чи поле може бути нульовим
// 'on_main_page' => 1,  
// 'on_main_page' =&gt; 1,  
// 'pos' => 1, - field position
// 'pos' =&gt; 1, - позиція поля
// 'value' => null
// 'value' =&gt; null
// )), ...)</nowiki>
// )), ...)</nowiki>
<br><br><be>
<br><br><br>
</div>


 
= '''ПЕРСОНАЛЬНІ ФУНКЦІЇ SIMPLYBOOK''' =
 
<br><br>
<div lang="en" dir="ltr" class="mw-content-ltr">
Якщо ваша компанія потребує додаткових функцій, ви можете активувати деякі з наших додаткових функцій. Повний перелік функцій з докладним описом доступний в адміністративному інтерфейсі за посиланням «Custom Feature» (Додаткові функції). Після увімкнення необхідної функції будуть активовані відповідні методи API, які ви зможете використовувати у своєму коді.
='''SIMPLYBOOK CUSTOM FEATURES'''=
<br><br><br>
= '''ФУНКЦІОНАЛЬНІСТЬ БРОНЮВАННЯ КОДОВИЙ ПОТІК''' =
<br><br>
<br><br>
If your company specific requires some additional functionality you can activate some of our additional Custom Features. The complete Custom Features list with detailed description is avaiable in your admin interface under the 'Custom Feature' link. After the necessary Custom Feature is enabled the corresponding API methods will be activated so you can use them in your code.
Авторизуйтесь в Simplybook API за допомогою функції '''loginClient.getToken(companyLogin, apiKey);'''.
<br><br><be>
</div>




Перевірте, чи активована функція «Категорії послуг» за допомогою [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]. Якщо так, то відобразіть список категорій [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].


<div lang="en" dir="ltr" class="mw-content-ltr">
='''BOOKING FUNCTIONALITY CODEFLOW'''=
<br><br>
Authorize in Simplybook API using '''loginClient.getToken(companyLogin, apiKey);''' function.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Отримати список послуг (подій) та виконавців (одиниць) за допомогою функцій [https://simplybook.me/en/api/doc#getEventList getEventList()] та [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Якщо для послуги доступний масив "unit_map", це означає, що ця послуга може бути надана тільки зазначеними виконавцями.
Check if Service categories Custom Feature is activated by [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")] if yes then display list of categories [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].
</div>






<div lang="en" dir="ltr" class="mw-content-ltr">
Якщо активовано будь-яку спеціальну функцію вибору співробітника [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] і в масиві "unit_map" не встановлено спеціальний термін для пари "послуга-виконавець", то користувачеві слід дозволити вибрати будь-який варіант постачальника або вибрати постачальника вручну. Але ручний вибір виконавців не повинен бути можливим, якщо активовано [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")].
Get list of services (events) and performers (units) using [https://simplybook.me/en/api/doc#getEventList getEventList()] and [https://simplybook.me/en/api/doc#getUnitList getUnitList()] functions. If "unit_map" array is available for service it means this service can be provided by given performers only.
</div>




Використовуйте [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from як поточну дату, $to як поточну дату, $eventId, $unitId, $count як значення вибраних учасників)], щоб отримати доступні часові слоти для заданої дати. '''$unitId''' повинен бути нульовим, якщо вибрано опцію «Будь-який співробітник».


<div lang="en" dir="ltr" class="mw-content-ltr">
If Any Employee Selector Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] and no special duration is set for service-performer pair in "unit_map" array then user should be allowed to select Any provider option or choose provider manually. But manual selection of performers should not be possible if [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] is enabled.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Use [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value )] to get available timeslots for given date. '''$unitId''' should be null if Any employee option is selected.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Якщо активний селектор «Будь-який співробітник» і було вибрано будь-якого співробітника, викличте [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)], щоб отримати доступний $unitId
If Any Employee selector is active and Any employee was selected call [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] to get available $unitId
</div>






Якщо активована функція «Налаштування форм для нових клієнтів», викличте функцію [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)], щоб отримати список полів, які клієнт повинен заповнити.


<div lang="en" dir="ltr" class="mw-content-ltr">
If Intake Forms Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] call [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] function to get list of fields for client to fill.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Викличте [https://simplybook.me/en/api/doc#book книгу ($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)], щоб зробити бронювання.
Call [https://simplybook.me/en/api/doc#book book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] to make a booking.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<br><br>
<br><be>
</div>