Dokumentace API

Použijte naše vývojářské API k vytvoření vlastního rozhraní pro rezervace. Můžete navrhnout jakékoli řešení, které chcete, od nejjednoduššího widgetu až po multifunkční aplikaci s funkcionalitou přizpůsobenou specifikům vašeho podnikání.

Programové rozhraní SimplyBook.me používá protokol JSON-RPC 2.0.

Podívejte se na příklad rozhraní pro rezervace založeného na API a přečtěte si také zdrojový kód tohoto řešení.

Autorizace

Metody Simplybook API vyžadují autentizaci. Pro autorizaci v Simplybook API je potřeba získat přístupový klíč — access-token. Pro získání tohoto access-tokenu byste měli zavolat JSON-RPC metodu getToken na službě http://user-api.simplybook.me/login a předat svůj osobní API-key. Svůj API-key můžete zkopírovat v admin rozhraní: přejděte na odkaz 'Plugins' a vyberte nastavení pluginu API 'Settings'. Pak musíte inicializovat vzdálený přístup k Simplybook API. Váš požadavek by měl obsahovat následující záhlaví: 'X-Company-Login', 'X-Token'.

Získání access-tokenu lze implementovat buď na straně klienta nebo ze serveru, což je bezpečnější řešení.

Můžete použít knihovnu javascript JSON-RPC-client a knihovnu php JSON-RPC-client z našich příkladů pro vývoj vlastního řešení.


Autorizace klientského API (Veřejná služba společnosti)

Autorizace ze strany klienta

Získávání token-klíče.


    var loginClient = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me' + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getToken( YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

Inicializace JSON-RPC-klienta


    this.client = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me',
        'headers': {
            'X-Company-Login': YOUR_COMPANY_LOGIN,
            'X-Token': token
        },
        'onerror': function (error) {}
    });
    

Autorizace kódu na straně serveru

Získávání token-klíče.


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

Inicializace JSON-RPC-klienta.


    $client = new JsonRpcClient( 'https://user-api.simplybook.me' . '/', array(
        'headers' => array(
            'X-Company-Login: ' .  YOUR_COMPANY_LOGIN,
            'X-Token: ' . $token
        )
    ));
    

Autorizace uživatele/admina API (Služba pro správu společnosti)

Autorizace ze strany klienta

Získávání token-klíče.


    var loginClient = new JSONRpcClient({
        'url': {$api_url} + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getUserToken( YOUR_COMPANY_LOGIN,  YOUR_USER_LOGIN,  YOUR_USER_PASSWORD);
    

Inicializace JSON-RPC-klienta.


    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) {}
    });
    

Autorizace kódu na straně serveru

Získávání token-klíče.


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getUserToken({YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);
    

Inicializace JSON-RPC-klienta.


    $client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
        'headers' => array(
            'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
            'X-User-Token: ' . $token
        )
    ));
    

Získávání dat ze serveru SimplyBook.me

Rezervační stránka je obvykle stránka, na které si klienti vybírají požadovanou službu, zaměstnance a čas schůzky. Poté klient zadá určité kontaktní údaje a potvrdí rezervaci. Složitější řešení mohou zahrnovat vyplňování různých dalších polí, provádění skupinových nebo vícenásobných rezervací atd. Popišme si pracovní postup vytvoření nejjednoduššího rezervačního formuláře. Pokud potřebujete na svou stránku přidat nějakou doplňkovou funkci, zde najdete úplný seznam metod Simplybook API.

První věc, kterou byste měli zobrazit, je seznam služeb a seznam zaměstnanců. Získejte tato data pomocí metod getEventList a getUnitList. Oba metody vrací seznam s kompletními informacemi o každé položce, takže máte mnoho možností, jak zobrazit služby a zaměstnance na své stránce. Pro filtrování zaměstnanců použijte vlastnost unit_map seznamu služeb, obsahuje informace o zaměstnancích, kteří mohou poskytovat vybranou službu.

Příklad kódu pro získání seznamu služeb


    $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
    // ), ...)
    

Příklad kódu pro získání seznamu poskytovatelů služeb


    $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
    // ), ...)
    

Dalším krokem pro klienta je vybrat datum a čas své služby. V příkladu použití API jsme použili výběr data Bootstrap, můžete použít tento nebo jakýkoli jiný kalendář. Chcete-li nastavit první datum kalendáře, použijte metodu getFirstWorkingDay. Může přijmout id zaměstnance jako parametr a vrací nejbližší datum, kdy je vybraný zaměstnanec (nebo jakýkoli zaměstnanec ve firmě ve výchozím nastavení) dostupný pro rezervaci.{""|t} Chcete-li zobrazit časové intervaly v rámci vybraného datumu, potřebujete metody getWorkCalendar a getStartTimeMatrix. První metoda vám poskytne informace o začátku a konci pracovního dne a volných dnech. Druhá vrací seznam časových intervalů, které lze rezervovat pro určitý datum.

Příklad kódu pro získání informací o pracovních dnech


    $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),
    //     ...
    //);
    

Příklad kódu pro získání matice časových slotů


    $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', ....),
    //);
    

Další užitečná metoda, kterou můžete potřebovat, je calculateEndTime. Každá služba může mít svou vlastní dobu trvání a také zaměstnanci vaší firmy mohou mít každý den různý pracovní rozvrh. Pomocí této metody můžete klientovi správně zobrazit datum a čas ukončení služby, kterou si rezervoval.

Příklad kódu pro výpočet konce rezervace


    $startDateTime = '2020-03-03 09:00:00';
    $serviceId = 1;
    $performerId = 1;
    $availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
    // returns '2020-03-03 10:00:00'
    

Když klient klikne na tlačítko potvrzení rezervace, musíte zavolat metodu book. Toto je hlavní funkce, která provádí všechna potřebná ověření a registruje novou rezervaci v systému Simplybook. Bere si informace o rezervaci, klientská data jako jméno a telefon a některé další parametry. Všechny popisy parametrů této metody najdete v seznamu funkcí API. Odezva metody book obsahuje unikátní kód a další detaily nové rezervace nebo seznam chyb, pokud nastaly nějaké problémy, takže tyto informace můžete použít k zobrazení výsledku rezervace klientovi pohodlným a intuitivním způsobem


Použití tajného klíče API

V některých případech může metoda book vyžadovat potvrzení, např. pokud přijímáte platby od klientů, potvrdíte rezervaci až po přijetí platby. Metoda API Simplybook confirmBookng přijímá jako parametry booking-id a bezpečný podpis (další metodou, která vyžaduje bezpečný podpis, je cancelBookng). Pro generování bezpečného podpisu by měl být použit váš tajný klíč API. Podívejte se, jak to lze provést na příkladu níže. Tajný klíč najdete v administrátorském rozhraní pod odkazem 'Nastavení' v pluginu API v seznamu 'Pluginy'.

Příklad kódu rezervace služby a její potvrzení pomocí tajného API klíče


    $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);
        }
    }
    

Příklad kódu pro získání dalších polí


    $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 Plugins

Pokud vaše firma vyžaduje nějakou další funkčnost, můžete aktivovat některé z našich dalších pluginů. Kompletní seznam pluginů s podrobným popisem je k dispozici ve vašem administračním rozhraní pod odkazem 'Plugins'. Po aktivaci potřebného pluginu budou aktivovány odpovídající API metody, které můžete použít ve svém kódu.

Tok kódu funkcionality rezervace

Autorizace v Simplybook API pomocí funkce loginClient.getToken(companyLogin, apiKey);.


Zkontrolujte, zda je plugin Kategorie služby aktivován pomocí isPluginActivated('event_category'), pokud ano, zobrazte seznam kategorií getCategoriesList().


Získejte seznam služeb (událostí) a poskytovatelů (jednotek) pomocí funkcí getEventList() a getUnitList(). Pokud je pro službu dostupné pole 'unit_map', znamená to, že tuto službu mohou poskytovat pouze daní poskytovatelé.


Pokud je aktivován plugin Výběr jakéhokoli zaměstnance isPluginActivated('any_unit') a pro dvojici služba-poskytovatel není v poli 'unit_map' nastavena žádná speciální doba trvání, měl by být uživatel schopen vybrat možnost Jakýkoli poskytovatel nebo si poskytovatele vybrat ručně. Ruční výběr poskytovatelů by však neměl být možný, pokud je aktivováno getCompanyParam('any_unit__hide_other_units').


Použijte getStartTimeMatrix ($from jako aktuální datum, $to jako aktuální datum, $eventId, $unitId, $count jako hodnota vybraných účastníků) k získání dostupných časových slotů pro dané datum. $unitId by mělo být null, pokud je vybrána možnost Jakýkoliv zaměstnanec.


Pokud je aktivní Any Employee selector a byla vybrána možnost Jakýkoliv zaměstnanec, zavolejte getAvailableUnits($eventId, $dateTime, $count) pro získání dostupných $unitId


Pokud je aktivován plugin Additional fields, zavolejte metodu isPluginActivated('event_field') a poté funkci getAdditionalFields($eventId) pro získání seznamu polí k vyplnění klientem.


Zavolejte book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) pro vytvoření rezervace.


Proč si tisíce klientů volí SimplyBook.me API?

Jasné a jednoduché rozhraní. Vytvořit si vlastní rezervační službu je hračka

Snadno můžete připojit veškerou potřebnou funkčnost

Plánování v reálném čase – vaši klienti si mohou rezervovat schůzky kdykoli a kdekoli, 24/7

Naše aplikace vám nabízí mnoho dalších užitečných funkcí. Klikněte zde pro více informací o našich funkcích.

API

Umožněte svým klientům rezervovat služby, aniž by opustili vaši aplikaci!

Udělejte svůj web nebo aplikaci relevantnější, atraktivnější a ziskovější tím, že svým klientům umožníte podniknout akci po objevení místních podniků. Naše API vám umožňuje snadno zahrnout tlačítko 'Rezervovat nyní' přímo na vaší webové stránce, což umožňuje vašim klientům plánovat schůzky v reálném čase, ve dne i v noci.

Náš API vám poskytuje přístup ke všem datům o rezervacích, která potřebujete k vytvoření a nasazení plánovacích schopností pro vaši klientskou veřejnost.

Spojováním klienta s vaším obchodním rozvrhem přemosťujeme zcela novou vrstvu komerce. Věříme, že přímé objednávání schůzek na vaší aplikaci nebo webové stránce nám umožňuje poskytovat vám skutečné klienty, nejen potenciální.