Documentação API

Use nosso desenvolvedor API para criar sua própria interface de reserva. Você pode desenhar qualquer solução que quiser variando do widget mais simples ao aplicativo multifuncional com funcionalidade personalizada de acordo com seu negócio específico.

A Interface de Programação do Aplicativo SimplyBook.me usa o protocolo JSON-RPC 2.0.

Veja um exemplo de interface de reserva baseada em API, e leia também o código fonte desta solução.

Autorização

Os métodos da API do SimplyBook requerem uma autenticação. Para autorizar a API do SimplyBook, você precisa obter uma chave de acesso — token de acesso. Para obter esse token de acesso, você deve chamar o método JSON-RPC getToken em http://user-api.simplybook.me/loginpassando sua chave de API pessoal. Você pode copiar sua chave de API na interface administrativa: acesse o link 'Plugins' e selecione 'Configurações' do plugin de API. Então você tem que inicializar o acesso remoto da API DO SimplyBook.me. O pedido deve conter os seguintes cabeçalhos: 'Login-da-Empresa-X', 'Token-X'.

A obtenção do acesso token pode ser implementada a partir do lado do cliente ou do servidor que é a solução mais segura.

Você pode usar a biblioteca de cliente javascript JSON-RPC e biblioteca de cliente php JSON-RPC a partir de nossos exemplos para o desenvolvimento de sua própria solução.


Client API (Company public service) authorization

Autorização do código do cliente

Obtendo a chave de token.


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

Cliente JSON-RPC de inicialização


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

Autorização a partir do código do lado do servidor

Obtendo a chave de token.


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

Inicialização cliente JSON-RPC.


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

Autorização do usuário/administrador API (do Serviço de Administração da Empresa)

Autorização do código do cliente

Obtendo a chave de token.


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

Inicialização cliente JSON-RPC.


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

Autorização a partir do código do lado do servidor

Obtendo a chave de token.


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

Inicialização cliente JSON-RPC.


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

Obtendo dados do servidor do SimplyBook.me

Uma página de reserva normalmente é uma página onde os clientes escolhem os serviços, um profissional e uma hora que precisam. Então, um cliente insere algumas informações de contato e confirma a reserva. As soluções mais complexas podem incluir o preenchimento de diferentes campos adicionais, permitindo reservas de grupo e com vários horários, e assim por diante. Vamos descrever o fluxo de trabalho da criação da página de reserva mais simples. Então, se você precisar adicionar algumas funcionalidades extras à sua página, veja aqui a lista completa de métodos de API do SimplyBook.me.

Então, a primeira coisa que você deve exibir é a lista de serviços e a lista de funcionários. Obtenha estes dados através dos métodos getEventList e getUnitList. Ambos devolvem uma lista com informações completas sobre cada item, então você tem muitas possibilidades como exibir serviços e funcionários em sua página. Para filtrar por funcionário, use a propriedade unit_map da lista de serviços, que contém as informações sobre os funcionários que podem fornecer o serviço selecionado.

Exemplo de código para obter lista de serviços


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

Exemplo de código para obtenção de lista de prestadores de serviço


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

O próximo passo para um cliente é escolher uma data e hora de serviço. Nós usamos uma seletor de data Bootstrap no exemplo de uso de API, você também pode usar este ou qualquer outro calendário. Para definir a primeira data de seu calendário use o método getFirstWorkingDay. Ele pode pegar a identificação do empregado como um parâmetro e retornar a próxima data em que o funcionário selecionado (ou qualquer funcionário na empresa, por padrão) esteja disponível para reserva.{""|t} Para mostrar intervalos de tempo dentro de uma data selecionada, você precisa dos métodos getWorkCalendar e getStartTimeMatrix. O primeiro método lhe oferece uma informação sobre a hora de início e fim do dia de trabalho e dias de folga. E o segundo retorna a lista das faixas horárias que podem ser reservadas para uma determinada data.

Exemplo de código para obtenção de informações sobre dias de trabalho


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

Exemplo de código para obtenção da matriz de hora inicial


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

Outro método útil que você pode precisar é o calculateEndTime. Cada serviço pode ter sua própria duração, também é possível que funcionários de sua empresa tenham horários de trabalho diferentes todos os dias. Por isso, ao usar este método você pode mostrar a um cliente uma data e hora final do serviço que ele reservou de forma correta.

Exemplo de código para calcular hora final da 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'
    

Quando um cliente clica no botão de confirmar reserva, você aciona o método reserva. Esta é a principal função que executa todas as validações e registros necessárias para uma nova reserva no sistema SimplyBook.me. Ela contém informações sobre a reserva, dados do cliente como nome e telefone e alguns parâmetros adicionais. Veja todas as descrições de parâmetros deste método na lista de funções API. A resposta do método reserva contém um código único e outros detalhes da nova reserva ou a lista de erros se tiver ocorrido algum problema. Por isso, você pode usar esta informação para mostrar o resultado de reserva para um cliente de forma conveniente e intuitiva


Usar chave secreta da API

Em alguns casos, o método reserva pode exigir a confirmação, por exemplo, se você aceitar os pagamentos dos clientes que você confirma a reserva apenas após o pagamento ter sido concluído. O método confirmBookng da API do SimplyBook.me utiliza ID de reserva e assinatura segura como parâmetros (outro método que requer assinatura segura é cancelBookng). Para a geração segura de assinaturas, sua chave API secreta deve ser usada. Veja como isso pode ser feito no exemplo abaixo. Você pode encontrar a chave secreta na interface de administração no link "Configurações" do recurso personalizado API na lista de "Recursos personalizados".

Exemplo de código de reserva de serviço e sua confirmação usando a chave API secreta


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

Exemplo de código para obtenção de campos adicionais


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

Recursos personalizados do SimplyBook.me

Se sua empresa específica exigir alguma funcionalidade adicional, você pode ativar alguns de nossos recursos personalizados adicionais. A lista completa de recurso personalizado com descrição detalhada está disponível em sua interface de administração no link "Recursos personalizados". Após o recurso personalizado necessário ser habilitado, os métodos da API correspondentes serão ativados para que você possa usá-los em seu código.

Funcionalidade de reserva codeflow

Autorizar na API do SimplyBook.me usando a função loginClient.getToken(companyLogin, apiKey);.


Verifique se o recurso de categorias de Serviços está ativado pelo isPluginActivated('event_category') se sim, então mostre a lista de categorias getCategoriesList().


Obtenha uma lista de serviços (eventos) e prestadores (unidades) usando getEventList() e getUnitList() functions. Se 'unit_map' array está disponível para serviço, significa que este serviço pode ser realizados apenas por determinados prestadores.


Se o recurso Seletor de qualquer prestador está ativadoisPluginActivated('any_unit') e nenhuma duração especial é definida para o par serviço-prestador na matriz 'unit_map', então o usuário deve ter permissão para selecionar a opção Qualquer prestador ou selecionar o prestador manualmente. Mas a seleção manual de prestadores não deve ser possível segetCompanyParam('any_unit__hide_other_units') estiver habilitada.


Use getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) para obter os horários disponíveis para determinada data.$unitId deve ser nulo se o recurso Qualquer Prestador estiver selecionado.


Se o Seletor de qualquer prestador estiver ativado e Qualquer Prestador estiver selecionadogetAvailableUnits($eventId, $dateTime, $count)para ficar disponível $unitId


Se o recurso Formulário de Amissão estiver ativado isPluginActivated('event_field') chame getAdditionalFields($eventId) função para obter uma lista de campos para o cliente preencher.


Chamar reservas ($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) para fazer um agendamento.


Por que milhares de clientes escolhem a API do SimplyBook.me?

Interface limpa e simples. Construa seu próprio serviço de reserva sem problemas

Você pode facilmente ter o recurso personalizado para todas as funcionalidades que precisar

Agendamento em tempo real – seus clientes podem reservar agendamentos de onde eles quiserem, quando eles quiseres (24 horas por dia, 7 dias por semana)

Nosso aplicativo oferece muitos outros recursos úteis. Clique aqui para saber mais sobre nossos recursos.

API

Permita que seus clientes reservem serviços sem sair de seu aplicativo!

Torne seu site ou aplicativo mais relevante, interessante e rentável, fornecendo a ação que seus clientes desejam para descobrirem as empresas locais. Nossa API permite que você inclua facilmente um botão "Reservar Agora" diretamente em sua página Web, permitindo que seus clientes agendem compromissos em tempo real, dia ou noite.

Nossa API dá a você acesso a todas as datas de reserva que você precisa para criar e implantar recursos de agendamento ao seu público de clientes.

Conectar um cliente com sua agenda de negócios, estamos preenchendo uma camada inteiramente nova de comércio. Acreditamos que a reserva direta em seu aplicativo ou site nos permite lhe fornecer realmente clientes, e não apenas um potencial de clientes.