API-dokumentation

Använd vårt API för utvecklare för att skapa ditt eget bokningsgränssnitt. Du kan designa vilken lösning du vill, från den enklaste widgeten till en multifunktionell applikation med funktioner som är anpassade efter ditt företags specifika behov.

Programmeringsgränssnittet för applikationen Simplybook använder JSON-RPC 2.0-protokollet.

Se ett exempel på ett API-baserat bokningsgränssnitt och läs även källkoden för den här lösningen.

Auktorisering

Simplybook API-metoder kräver en autentisering. För att auktorisera i Simplybook API måste du få en åtkomstnyckel - access-token. För att få denna access-token ska du anropa JSON-RPC-metoden getTokenhttp://user-api.simplybook.me/login-tjänsten och skicka din personliga API-nyckel. Du kan kopiera din API-nyckel i admin-gränssnittet: gå till länken "Plugins" och välj API-plugin "Inställningar". Sedan måste du initiera fjärråtkomst till Simplybook API. Din begäran bör innehålla följande rubriker: "X-Company-Login", "X-Token".

Att få access-token kan genomföras antingen från klientsidan eller från din server, vilket är den säkraste lösningen.

Du kan använda javascript JSON-RPC-klientbibliotek och php JSON-RPC-klientbibliotek från våra exempel för din egen lösningsutveckling.


Klient API (Företagets offentliga tjänst) auktorisering

Auktorisering från kod på klientsidan

Hämta token-nyckeln.


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

Initialisering av JSON-RPC-klient


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

Auktorisering från kod på serversidan

Hämta token-nyckeln.


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

Initialisering av JSON-RPC-klient.


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

Auktorisering av API för användare/Admin (företagets administrationstjänst)

Auktorisering från kod på klientsidan

Hämta token-nyckeln.


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

Initialisering av JSON-RPC-klient.


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

Auktorisering från kod på serversidan

Hämta token-nyckeln.


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

Initialisering av JSON-RPC-klient.


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

Hämta data från Simplybook-servern

En bokningssida är vanligtvis en sida där kunder väljer den tjänst de behöver, en anställd och en tid för deras möte. Sedan anger en klient lite kontaktinformation och bekräftar bokningen. De mer komplexa lösningarna kan inkludera att fylla i olika ytterligare fält, göra några grupp- eller multy-times-bokningar och så vidare. Låt oss beskriva arbetsflödet för att skapa den enklaste bokningssidan. Om du sedan behöver lägga till några extra funktioner på din sida, se här den fullständiga listan över Simplybook API-metoder.

Så det första du bör visa är listan över tjänster och listan över anställda. Hämta dessa data med hjälp av metoderna getEventList och getUnitList. De returnerar båda en lista med fullständig information om varje objekt i den, så du har många möjligheter att visa tjänster och anställda på din sida. För att göra filtrering av anställda använder du egenskapen unit_map i servicelistan, den innehåller information om anställda som kan tillhandahålla den valda tjänsten.

Kodexempel för att få en lista över tjänster


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

Kodexempel för att få lista över tjänsteutövare


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

Nästa steg för en klient är att välja ett datum och en tid för sin tjänst. Vi har använt en Bootstrap-datumväljare i API-användningsexemplet, du kan också använda den här eller någon annan kalender. För att ställa in kalenderns första datum använder du metoden getFirstWorkingDay. Den kan ta anställdas id som en parameter och returnerar nästa datum då den valda anställde (eller alla anställda i företaget som standard) är tillgänglig för bokning.{""|t} För att visa tidsluckor inom ett valt datum behöver du metoderna getWorkCalendar och getStartTimeMatrix. Den första metoden ger dig information om arbetsdagens start- och sluttid samt om lediga dagar. Den andra metoden returnerar en lista med tidsluckor som kan bokas för ett visst datum.

Kodexempel för att få information om arbetsdagar


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

Kodexempel för att få fram en starttidsmatris


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

En annan användbar metod som du kan behöva är calculateEndTime. Varje tjänst kan ha sin egen varaktighet, även ditt företags anställda kan ha olika arbetsschema från dag till dag. Så med hjälp av den här metoden kan du visa en kund ett slutdatum och en tid för den tjänst han har bokat på ett korrekt sätt.

Kodexempel för beräkning av sluttid för bokning


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

När en kund klickar på knappen Bekräfta bokningen måste du anropa metoden Boka. Detta är huvudfunktionen som utför alla nödvändiga valideringar och registrerar en ny bokning i Simplybook-systemet. Den tar information om bokningen, klientdata som namn och telefon och några ytterligare parametrar. Se alla parambeskrivningar av denna metod i API-funktionslistan. Bokningsmetodens svar innehåller en unik kod och andra detaljer om den nya bokningen eller listan över fel om vissa problem uppstod, så du kan använda den här informationen för att visa bokningsresultatet för en klient på ett övertygande och intuitivt sätt


Användning av hemlig API-nyckel

I vissa fall kan bokningsmetoden kräva bekräftelse, t.ex. om du accepterar betalningar från kunder bekräftar du bokningen först efter att betalningen redan har kommit. Simplybook API:s metod confirmBookng tar booking-id och säker signatur som parametrar (en annan metod som kräver säker signatur är cancelBookng). För säker signaturgenerering bör din hemliga API-nyckel användas. Se hur det kan göras i exemplet nedan. Du hittar den hemliga nyckeln i admin-gränssnittet under länken "Inställningar" för API-plugin i listan "Plugins".

Kodexempel för bokning av tjänst och dess bekräftelse med hjälp av hemlig API-nyckel


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

Kodexempel för att hämta ytterligare fält


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

Insticksprogram för Simplybook

Om din företagsspecifika kräver ytterligare funktionalitet kan du aktivera några av våra ytterligare plugins. Den fullständiga plugin-listan med detaljerad beskrivning finns tillgänglig i ditt administratörsgränssnitt under länken "Plugins". När det nödvändiga insticksprogrammet har aktiverats kommer motsvarande API-metoder att aktiveras så att du kan använda dem i din kod.

Bokningsfunktionalitet kodflöde

Auktorisera i Simplybook API med funktionen loginClient.getToken (companyLogin, apiKey); function.


Kontrollera om insticksprogrammet för tjänstekategorier är aktiverat genom isPluginActivated('event_category') om ja, visa då listan över kategorier getCategoriesList ().


Hämta en lista över tjänster (händelser) och utförare (enheter) med hjälp av funktionerna getEventList() och getUnitList(). Om matrisen "unit_map" är tillgänglig för tjänsten betyder det att denna tjänst endast kan tillhandahållas av givna utförare.


Om plugin-programmet Any Employee selector är aktiverat isPluginActivated('any_unit ') och ingen särskild varaktighet har angetts för paret tjänst-utförare i matrisen 'unit_map', ska användaren kunna välja alternativet Any provider eller välja leverantör manuellt. Men manuellt val av utförare bör inte vara möjligt om getCompanyParam('any_unit__hide_other_units') är aktiverat.


Använd getStartTimeMatrix ($from som aktuellt datum, $to som aktuellt datum, $eventId, $unitId, $count som valt deltagarvärde ) för att få tillgängliga tidsluckor för ett givet datum. $unitId ska vara null om alternativet Alla anställda har valts.


Om väljaren Any Employee är aktiv och Any employee valdes, ring getAvailableUnits($eventId, $dateTime, $count) för att få tillgängliga $unitId


Om tillägget Additional fields är aktiverat isPluginActivated('event_field' ) anropa funktionen getAdditionalFields ($eventId ) för att få en lista över fält som klienten ska fylla i.


Ring book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) för att göra en bokning.


Varför väljer tusentals kunder SimplyВook.me API?

Tydligt och enkelt gränssnitt. Att bygga din egen bokningstjänst är lätt som en plätt

Du kan enkelt plugga in alla de funktioner du behöver

Schemaläggning i realtid - dina kunder kan boka möten var de vill, när de vill, dygnet runt, alla dagar i veckan

Vår app ger dig många andra användbara funktioner. Klicka här för att lära dig mer om våra funktioner.

API

Låt dina kunder boka tjänster utan att lämna din app!

Gör din webbplats eller app mer relevant, engagerande och lönsam genom att tillhandahålla den åtgärd som dina kunder vill vidta när de upptäcker lokala företag. Med vårt API kan du enkelt inkludera en "Boka nu"-knapp direkt på din webbsida, så att dina kunder kan schemalägga möten i realtid, dag som natt.

Vårt API ger dig tillgång till alla bokningsdata du behöver för att bygga och distribuera schemaläggningsfunktioner till din publik av kunder.

Genom att ansluta en klient till ditt affärsschema överbryggar vi ett helt nytt lager av handel. Vi tror att direkt tidsbokning på din app eller webbplats gör det möjligt för oss att ge dig kundleverans, inte bara en kundpotential.