Documentación de la API

Autorización

Los métodos de la API de Simplybook requieren una autenticación. Para autorizar en la API de Simplybook, necesita obtener una clave de acceso — access-token. Para obtener esta access-token debe llamar al método JSON-RPC getToken en el servicio http://user-api.simplybook.me/login pasando su clave API personal. Puedes copiar su clave API en la interfaz de administración: vaya al enlace "Plugins" y seleccione el plugin de la API "Ajustes". Entonces tiene que solicitar el acceso remoto a la API SimplyBook.me. Su solicitud debe contener las siguientes cabeceras: 'Inicio de sesión de empresa-X', 'Token de X'.

Conseguir la clave access-token puede implementarse tanto por parte del cliente como por parte de nuestro servidor, siendo ésta la opción más segura.

Puede usar javascript JSON-RPC-client library y php JSON-RPC-client library de nuestros ejemplos para su propio desarrollo de soluciones.


Autorización de cliente API (Empresa pública de servicios)

Autorización de código adicional del cliente

Conseguir la llave simbólica.


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

Inicialización JSON-RPC-cliente.


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

Autorización de código adicional del servidor

Conseguir la llave simbólica.


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

Inicialización JSON-RPC-cliente.


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

Autorización de API de Usuario/Administrador (Company administration service)

Autorización de código adicional del cliente

Conseguir la llave simbólica.


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

Inicialización JSON-RPC-cliente.


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

Autorización de código adicional del servidor

Conseguir la llave simbólica.


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

Inicialización JSON-RPC-cliente.


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

Obtener los datos desde un servidor SimplyBook.me

Una página de reservas normalmente es una página donde los clientes seleccionan el servicio que necesitan, un empleado y el horario de la cita. El cliente introduce a continuación información de contacto y confirma la reserva. Las soluciones más complejas implican rellenar campos adicionales, relaizar reservas de grupos, en varios horarios, etc. Vamos a describir el proceso de creación de página de reservas más sencilla. A partir de ahí, si necesita añadir funcionalidad extra, puede consultar la lista completa de los métodos API SimplyBook.me aquí.

Así, lo primero que necesita es introducir la lista de servicios y la lista de empleados. Consiga estos datos en getEventList y getUnitList. Ambas opciones le devolverán una lista con la información completa de cada uno de los elementos de éstas, de forma que pueda mostrar servicios y empleados en su página. Para hacer un filtro de empleados use la propiedad unit_map de la lista de servicios, que contiene la información sobre los empleados que pueden prestar el servicio seleccionado.

Ejemplo de código de obtener lista de servicios


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

Ejemplo de código de conseguir lista de ejecutantes de servicio


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

El siguiente paso es seleccionar una fecha y una hora para su servicio. Usamos un seleccionador de fechas Bootstrap en el ejemplo de uso de la API, y usted también puede usar este o cualquier otro calendario. Para configurar la primera fecha de su calendario, seleccione el método getFirstWorkingDay. Puede tomar la identificación del empleado como un parámetro y muestra la siguiente fecha en que el empleado seleccionado (o cualquier otro en la empresa por defecto) está disponible para la reserva. {""|t} Para mostrar las horas disponibles dentro de una fecha seleccionada, necesitará getWorkCalendar y getStartTimeMatrix. El primero es una solución que le da información sobre la hora de inicio y de finalización del día laborable, y sobre los días libres. El segundo le devuelve la lista de franjas temporales que pueden ser reservadas en una fecha concreta.

Ejemplo de código de conseguir información de días de trabajo


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

Ejemplo de código de obtener la matriz de tiempo de inicio


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

Otra solución útil que puede necesitar es calculateEndTime. Cada servicio tiene su propia duración, y los empleados de su empresa también pueden tener distintas agendas de trabajo cada día. Por lo tanto, al usar esta solución puede mostrarle a un cliente una fecha y hora definitivas del servicio que ha reservado de forma correcta.

Ejemplo de código de cálculo de la hora del final de la reserva


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

Cuando un cliente haga click en la tecla de confirmar reserva, usted tiene que llamar al método de reserva. Esta es la función principal que realiza todas las validaciones necesarias y registra una nueva reserva en el sistema SimplyBook.me. Se necesita información sobre la reserva, los datos del cliente como el nombre y teléfono y algunos parámetros adicionales. Puede ver todas las descripciones de los parámetros de este método en la lista de funciones de la API . El método de reserva contiene un código único y otros detalles de la nueva reserva o la lista de errores si ha habido algún problema, así que puede utilizar esta información para mostrar el resultado de una reserva al cliente de una forma práctica e intuitiva.


Uso de la API clave secreta

En algunos casos, el método de reserva puede requerir confirmación. Por ejemplo, si acepta pagos de sus clientes podrá confirmar la reserva solamente después de que el pago ya se haya realizado. La API de SimplyBook.me confirmarReserva incluye la identidad de la reserva y la firma segura como parámetros (otro método que requiere una firma segura es el de cancelBookng). Para la generación de firma segura, deberá usar su clave API secreta. Vea cómo puede realizarse en el siguiente ejemplo. Puede encontrar esta clave secreta en la interfaz de administración bajo el enlace "Ajustes" en el plugin de la API dentro de la lista de "Plugins".

Ejemplo de código de la reserva de servicios y su confirmación mediante la clave secreta 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);
        }
    }
    

Ejemplo de código de conseguir campos adicionales


    $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.me plugins

Si su empresa requiere alguna función específica adicional puede activar alguno de nuestros plugins adicionales. La lista completa de plugins con su descripción detallada está disponible en su interfaz de administración bajo el enlace de "Plugins". Después de que se active el plugin, los métodos API correspondientes se activarán para que pueda usarlos en su código.

Código de funcionalidad de reservas

Autorizar en el API SimplyBook.me utilizando la función loginClient.getToken(companyLogin, apiKey);.


Überprüfen Sie, ob die individuelle Funktion Dienstleistungskategorien aktiviert ist isPluginActivated('event_category'), falls ja, dann wird die Liste der Dienstleistungskategorien angezeigt getCategoriesList().


Obtener lista de servicios (eventos) y proveedores (unidades) utilizando las funciones getEventList() y getUnitList(). Si el array 'unit_map' está disponible para el servicio significa que este servicio puede ser proporcionado por sólo por los proveedores dados.


Si se activa el plugin Selector de empleados isPluginActivated('any_unit') y no hay una duración especificada para el par de servicios-proveedor en el array 'unit_map', entonces se debe permitir al usuario seleccionar cualquier opción del proveedor del proveedor o elegir manualmente. Sin embargo, la selección manual de proveedores no debería ser posible si getCompanyParam('any_unit__hide_other_units') está activado.


Utilice getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) para obtener los intervalos de tiempo disponibles para la fecha dada. $ UnitID debe ser nulo si se selecciona la la opción Cualquier empleado.


Si selector cualquier empleado está activo y fue seleccionado un empleado llame a getAvailableUnits($eventId, $dateTime, $count) para obtener $unitId disponible


Si los el plugin campos adicionales está activado isPluginActivated('event_field') llamar a la función getAdditionalFields($eventId) para obtener la lista de campos que debe rellenar el cliente.


Llamar a book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) para hacer una reserva.


¿Por qué miles de clientes escogen la API de SimplyBook.me?

Interfaz clara y sencilla. Construya su servicio de reservas sin ningún problema.

Puede activar fácilmente todas las funciones que necesite.

Reservas a tiempo real - sus clientes pueden reservar citas desde dónde quieran y cuándo quieran, 24/7

Nuestra aplicación le ofrece muchas otras funciones muy útiles. Haga clic aquí para saber más sobre nuestras funciones.

API para desarrolladores

¡Permita que sus clientes reserven servicios sin salir de su app!

Haga que su aplicación o página web sea más relevante, más atractiva y más ventajosa ofreciendo la posibilidad a sus clientes de ir más allá de descubrir el negocio local. Nuestra API le permite incluir fácilmente una tecla "Reservar ahora" directamente en su página web, permitiendo a sus clientes realizar reservas a tiempo real, durante el día y durante la noche.

Nuestra API le da acceso a todos los datos de reserva que necesita para construir y desarrollar la posibilidad de hacer reservas para sus espectadores y clientes.

Conectando a un cliente con la disponibilidad de su negocio, ofrecemos un nivel de negocio completamente nuevo. Creemos que la posibilidad de realizar reservas directamente desde su página web o su app nos permite brindarle la posibilidad de establecer un cliente real, no solamente un cliente potencial.