Documentation de l'API

Utilisez notre API pour développeurs pour créer votre propre interface de réservation. Vous pouvez concevoir la solution que vous souhaitez, du plus simple widget à l'application multifonctionnelle avec des fonctionnalités sur mesure selon les besoins spécifiques de l'entreprise.

L'Interface de programmation de l'application SimplyBook.me utilise le protocole JSON-RPC 2.0.

Voir un exemple d'interface de réservation basées sur l'APIet aussi accéder au code source de cette solution.

Autorisation

Les méthodes API Simplybook nécessitent une authentification. Pour autoriser dans l'API Simplybook, vous devez obtenir une clé d'accès — jeton d'accès. Pour obtenir cette clé d'accès, vous devez appeler la méthode JSON-RPC getToken sur le service http://user-api.simplybook.me/login en passant votre clé d'API personnelle. Vous pouvez copier votre clé API dans l'interface d'administration : rendez-vous sur le lien "Plugins" et sélectionnez le plugin API "Paramètres". Ensuite, vous devez initialiser l'accès à distance aux API SimplyBook.me. Votre demande doit contenir les entêtes suivantes : 'X-Company-Login', 'X-Token'.

Obtenir le jeton-accès qui peut être mis en œuvre soit côté client soit à partir de votre serveur qui est la solution la plus sûre.

Vous pouvez utiliser nos exemples javascript JSON-RPC-client library et php JSON-RPC-client library pour votre propre solution de développement.


Autorisation (Company public service) API Client

Autorisation de code côté client

Obtenir le jeton-clé.


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

Initialisation JSON-RPC-client.


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

Autorisation de code côté serveur

Obtenir le jeton-clé.


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

Initialisation JSON-RPC-client.


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

Autorisation API Utilisateur/Admin (Company administration service)

Autorisation de code côté client

Obtenir le jeton-clé.


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

Initialisation JSON-RPC-client.


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

Autorisation de code côté serveur

Obtenir le jeton-clé.


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

Initialisation JSON-RPC-client.


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

Obtenir des données à partir du serveur SimplyBook.me

Une page de réservation est habituellement une page sur laquelle les clients choisissent le service dont ils ont besoin, un employé et un horaire pour leur rendez-vous. Ensuite le client entre ses informations de contact et confirme sa réservation. Les solutions plus avancées peuvent comprendre des champs supplémentaires, la possibilité de réserver en groupe ou plusieurs horaires à la fois etc. Décrivons la création de la page de réservation la plus simple. Ensuite, si vous avez besoin d'ajouter d'autres fonctionnalités à votre page, voici la liste des méthodes API SimplyBook.me.

Donc la première chose que vous devez afficher est la liste des services et la liste des employés. Obtenez ces données avec les méthodes getEventList et getUnitList. Toutes deux retournent une liste contenant toutes les infos sur chaque article. Vous avez ensuite de nombreuses possibilités pour afficher les services et les employés à votre page. Pour filtrer sur l'employé, utilisez la propriétéunit_map de la liste des services, il contient les informations sur les employés qui peuvent fournir le service sélectionné.

Exemple de code d'obtention de la liste des services


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

Exemple de code d'obtention de la liste des prestataires de services


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

La prochaine étape pour le client est de choisir la date et l'heure de son service. Nous avons utilisé un sélecteur de date Bootstrap dans l'exemple avec API, vous pouvez également utiliser tout autre calendrier. Pour définir la première date du calendrier, utilisez la méthode getFirstWorkingDay. Elle prend en entrée l'ID de l'employé et renvoie la prochaine date à laquelle l'employé sélectionné (ou tout salarié dans l'entreprise par défaut) est disponible pour une réservation.{""|t} Pour montrer les créneaux horaires sur une date choisie, vous aurez besoin des méthodes getWorkCalendar et getStartTimeMatrix. La première méthode vous donne une information sur les horaires travaillés (début et fin) et sur les jours de congé. Et la seconde renvoie la liste des créneaux horaires qui peuvent être réservés pour une certaine date.

Exemple de code d'obtention d'infos des jours de travail


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

Exemple de code d'obtention de la matrice de l'heure de début


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

Une autre méthode très utile dont vous aurez peut-être besoin est calculateEndTime . Chaque service peut avoir sa propre durée, aussi, les employés de votre entreprise peuvent avoir différents horaires de travail et ce au jour le jour. En utilisant cette méthode, vous afficher montrer à un client la date et l'heure de fin du service qu'il a réservé d'une manière correcte.

Exemple de code du calcul de la fin de la réservation


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

Quand un client clique sur le bouton Confirmer la réservation, vous devez appeler la méthode book. Il s'agit de la fonction principale qui réalise toutes les validations et enregistre la nouvelle réservation dans le système SimplyBook.me. Elle prend les informations de réservation, données client telles que le nom, téléphone et d'autres paramètres. Vous pouvez voir toutes les descriptions de paramètres dans la liste de fonctions API. La réponse de la méthode book contient un code unique et d'autres détails de la nouvelle réservation ou la liste des erreurs si certains problèmes se sont produits de sorte que vous pouvez utiliser ces informations pour afficher le résultat de réservation à un client de manière pratique et intuitive


Utilisation de l'API clé secrète

Dans certains cas, la méthode

Exemple de code de réservation de service et sa confirmation en utilisant la clé-API secrète


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

Exemple de code d'obtention de champs supplémentaires


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

Plugins SimplyBook.me

Si votre entreprise spécifique nécessite des fonctionnalités supplémentaires, vous pouvez activer certains de nos plugins supplémentaires. La liste complète de plugin avec description détaillée est disponible dans votre interface d'administration sous le lien 'Plugins'. Après l'activation du plugin qui vous est nécessaire, les méthodes de l'API correspondantes seront activées de sorte que vous pourrez les utiliser dans votre code.

Fonctionnalité de réservation codeflow

Autorisez dans l'API SimplyBook.me avec la fonction loginClient.getToken(companyLogin, apiKey);.


Vérifiez si le plugin Catégories de services est activé par isPluginActivated('event_category') si yes affiche alors la liste des catégories getCategoriesList().


Obtenez la liste de services (événements) et prestataires (units) avec getEventList() et les fonctions getUnitList(). Si le tableau 'unit_map' est disponible pour un service cela veut dire que ce service peut être fourni uniquement par des prestataires donnés.


Si le plugin Sélection tout employé est activé isPluginActivated('any_unit') et qu'aucune durée n'a été définie pour le couple service-prestataire dans le tableau 'unit_map' alors l'utilisateur doit pouvoir sélectionner l'option Tout prestataire ou choisir le prestataire manuellement. Mais la sélection manuelle de prestataires ne doit pas être possible si getCompanyParam('any_unit__hide_other_units') est activé.


Utilisez getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) pour obtenir les créneaux disponibles à une date précise. $unitId doit être null si l'option Tout employé est sélectionnée.


Si le plugin Sélection tout employé est activé et Tout employé est sélectionné appellez getAvailableUnits($eventId, $dateTime, $count) pour obtenir les $unitId disponibles


Si le plugin Champs supplémentaires est activé isPluginActivated('event_field') appelez la fonction getAdditionalFields($eventId) pour obtenir la liste des champs à remplir par le client.


Appelez book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) pour faire une réservation.


Pourquoi des milliers de clients ont choisi l'API SimplyBook.me?

Interface claire et simple. Construisez votre propre service de réservation sans aucun problème

Vous pouvez facilement accéder à toutes les fonctionnalités des plugins dont vous avez besoin

Calendrier en temps réel – vos clients peuvent réserver des rendez-vous où ils veulent, quand ils veulent 24/7

Notre application vous offre de nombreuses autres fonctionnalités utiles. Cliquez ici pour en savoir plus sur nos fonctionnalités.

API

Permettez à vos clients de réserver des services sans sortir de votre appli !

Rendez votre site Web ou votre appli plus pertinents, agréable et rentable en permettant à vos clients de réserver vos services dès qu'ils ont découvert votre entreprise. Notre API vous permet d'inclure facilement un bouton 'Réserver' directement à votre page Web, permettant à vos clients de planifier des rendez-vous en temps réel, jour et nuit.

Notre API vous donne accès à toutes les données de réservation dont vous avez besoin pour créer et déployer des capacités de planification pour vos de clients.

Afin de connecter un client avec votre horaire de travail, nous avons comblé une toute nouvelle couche de commerce. Nous croyons que la réservation des rendez-vous directs sur votre application ou site web nous permet de vous offrir la livraison du client, et non pas seulement pour un client potentiel.