Ver categorias

Como Controlar a Lista de Acesso de Agendamentos via API Externa

Resumo #

O eAgenda permite validar, de forma automática, se um cliente está autorizado a realizar um agendamento utilizando uma Lista de Acesso conectada a uma API externa.

Quando o cliente informa o CPF durante o agendamento, o eAgenda envia uma requisição HTTP POST para a URL configurada, utilizando timestamp e assinatura HMAC-SHA256 para garantir segurança e integridade da comunicação.

Neste documento você encontrará:

  • Como funciona a estrutura da requisição enviada pelo eAgenda
  • Como desenvolver a API externa responsável pela validação
  • Como criar a Lista de Acesso que valida via API externa
  • Como compartilhar o link dessa lista com seus clientes

Estrutura da Requisição Enviada pelo eAgenda #

Corpo da Requisição (JSON) #

O eAgenda envia o identificador informado pelo cliente no campo configurado (ex.: CPF):

{
  "identifier": "12345678901"
}

Cabeçalhos Enviados #

Os cabeçalhos adicionam segurança e autenticação:

  • X-Timestamp: timestamp UNIX da requisição
  • X-Signature: hash HMAC-SHA256 gerado a partir do corpo + timestamp
  • Content-Type: application/json

Método #

POST

Como Desenvolver sua API Externa #

A API externa deve:

  1. Verificar o timestamp para evitar replay attacks
  2. Validar a assinatura HMAC-SHA256
  3. Checar se o identificador informado está autorizado
  4. Responder com { "authorized": true/false }

Exemplo completo em Python + Flask #

from flask import Flask, request, jsonify
import hmac
import hashlib
import time

app = Flask(__name__)

SECRET_KEY = "minha-chave-secreta-super-segura-123"

CLIENTES_AUTORIZADOS = [
    "01234567890",
    "12345678901",
    "98765432100",
    "11122233344"
]

TIME_TOLERANCE = 120

def verify_signature(body, timestamp, received_signature):
    message = body + timestamp
    expected_signature = hmac.new(
        SECRET_KEY.encode('utf-8'),
        message.encode('utf-8'),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected_signature, received_signature)

@app.route('/validate', methods=['POST'])
def validate_client():
    timestamp_header = request.headers.get('X-Timestamp')
    signature_header = request.headers.get('X-Signature')

    if not timestamp_header or not signature_header:
        return jsonify({"error": "Headers X-Timestamp e X-Signature são obrigatórios"}), 400

    body = request.get_data(as_text=True)

    try:
        request_time = int(timestamp_header)
        current_time = int(time.time())
        diff = abs(current_time - request_time)
        if diff > TIME_TOLERANCE:
            return jsonify({"authorized": False, "error": "Requisição expirada"}), 403
    except:
        return jsonify({"error": "Timestamp inválido"}), 400

    if not verify_signature(body, timestamp_header, signature_header):
        return jsonify({"authorized": False, "error": "Assinatura inválida"}), 403

    data = request.get_json()
    identifier = data.get("identifier")

    if not identifier:
        return jsonify({"error": "Campo 'identifier' é obrigatório"}), 400

    autorizado = identifier in CLIENTES_AUTORIZADOS

    return jsonify({"authorized": autorizado, "identifier": identifier}), 200

@app.route('/health', methods=['GET'])
def health():
    return jsonify({
        "status": "online",
        "secret_key_configured": True,
        "authorized_clients_count": len(CLIENTES_AUTORIZADOS)
    }), 200

if __name__ == "__main__":
    app.run(debug=True, port=5000)

Exemplos de resposta #

Cliente autorizado

{
  "authorized": true,
  "identifier": "12345678901"
}

Cliente não autorizado

{
  "authorized": false,
  "identifier": "12345678901"
}

Como Criar a Lista de Acesso que Valida via API Externa #

Passo 1 — Acessar a plataforma #

  1. Entre em: https://eagenda.com.br
  2. Faça login com sua conta.

Passo 2 — Acessar o menu correto #

  1. No menu lateral, clique em Conta
  2. Clique em Acesso de Clientes

Passo 3 — Criar nova lista #

  1. Clique em Nova Lista
  1. No campo Nome da Lista, coloque qualquer nome (ex.: teste)
  2. Os demais campos podem ficar em branco

Passo 4 — Configurar o tipo de validação #

  • Login obrigatório: desmarcar
  • Usar Lista Externa de Acesso: marcar
  • Tipo de Chave de Acesso: selecionar CPF

Passo 5 — Configurar integração externa #

Preencher:

  • URL da API Externa:
    Ex.: https://seuservidor.com/validate
  • Chave Secreta:
    Ex.: minha-chave-secreta-super-segura-123

Passo 6 — Finalizar #

Clique em Salvar.

Sua lista está pronta para validar automaticamente cada CPF através da API externa.


Como Compartilhar a Lista com os Clientes #

  1. No eAgenda, vá em Conta → Acesso de Clientes
  2. Localize a lista criada
  3. Clique em Ações
  4. Selecione Copiar link compartilhado

Esse link pode ser enviado aos clientes:
Eles inserem o CPF → o sistema consulta a API → libera ou bloqueia automaticamente o agendamento.

Entre em Contato ou Saiba Mais #

Estamos à disposição para ajudar! Acesse nossos canais oficiais:

📞 WhatsApp Clique aqui para nos enviar uma mensagem
🌐 Plataforma eAgenda Conheça o eAgenda
🏢 Nossa Empresa Mupi Systems – Soluções Inovadoras
📧 E-mail contato@mupisystems.com.br
📚 Tutoriais e Documentação Acesse nossos guias e tutoriais

Desenvolvido por BetterDocs