🚀 API North CRM

Documentação de Integração - Sistema de Agendamentos e Leads

🎯 Visão Geral

A API North CRM permite integração externa para cadastro de leads, consulta de horários disponíveis e criação de agendamentos. Todos os endpoints requerem autenticação via token.

Base URL: https://api.northcrm.com.br

🔐 Autenticação

Token de Acesso

Todas as requisições devem incluir um token de autenticação válido no corpo da requisição. Este token identifica automaticamente sua clínica e é fornecido dentro do sistema North CRM.

"token": "seu_token_aqui"

👤 Cadastrar Lead

Cadastra um novo lead no sistema. O endpoint verifica automaticamente se o cliente já existe pelo telefone antes de criar um novo registro.

POST /cadastrar-lead

📝 Parâmetros Obrigatórios

Campo Tipo Descrição Exemplo
token string Token de autenticação (identifica automaticamente a clínica) "abc123xyz789"
telefone string Telefone do lead (usado para verificar duplicatas) "54999887766"
nome string Nome completo do lead "Maria Silva"
🔍 Verificação Automática:
• O sistema verifica se já existe um cliente com o telefone informado
• Se existir, retorna os dados do cliente existente
• Se não existir, cria um novo lead com as informações fornecidas

📨 Exemplo de Requisição

curl -X POST https://api.northcrm.com.br/cadastrar-lead \
  -H "Content-Type: application/json" \
  -d '{
    "token": "abc123xyz789",
    "telefone": "54999887766",
    "nome": "Maria Silva"
  }'

✅ Exemplo de Resposta (Cliente Existente)

{
  "cliente_existente": true,
  "cliente_id": 12345,
  "nome": "Maria Silva Santos",
  "telefone": "54999887766",
  "mensagem": "Cliente já cadastrado no sistema"
}

✅ Exemplo de Resposta (Novo Lead Criado)

{
  "sucesso": true,
  "lead_id": 67890,
  "nome": "Maria Silva",
  "telefone": "54999887766",
  "mensagem": "Lead cadastrado com sucesso"
}

❌ Exemplo de Resposta (Erro)

{
  "erro": "Obrigatório informar um telefone."
}

⏰ Consultar Horários Disponíveis

Retorna os horários disponíveis para agendamento em um período específico.

POST /horarios-disponiveis

📝 Parâmetros Obrigatórios

Campo Tipo Descrição Exemplo
token string Token de autenticação (identifica automaticamente a clínica) "abc123xyz789"
data_inicial string Data inicial no formato YYYY-MM-DD "2025-06-23"
data_final string Data final no formato YYYY-MM-DD "2025-06-30"
⚠️ Restrições:
Período máximo: 7 dias entre data_inicial e data_final
Formato de data: Obrigatório usar formato YYYY-MM-DD
Autenticação: Token deve ser válido e ativo

📨 Exemplo de Requisição

curl -X POST https://api.northcrm.com.br/horarios-disponiveis \
  -H "Content-Type: application/json" \
  -d '{
    "token": "abc123xyz789",
    "data_inicial": "2025-06-23",
    "data_final": "2025-06-30"
  }'

✅ Exemplo de Resposta (Sucesso)

[
  {
    "data": "2025-06-23",
    "horaDisponivel": "09:30",
    "codigoFuncionario": 4406,
    "codigoSala": 1052
  },
  {
    "data": "2025-06-23",
    "horaDisponivel": "09:45",
    "codigoFuncionario": 4406,
    "codigoSala": 1052
  },
  {
    "data": "2025-06-23",
    "horaDisponivel": "10:00",
    "codigoFuncionario": 4406,
    "codigoSala": 1052
  }
]

📅 Criar Agendamento

Cria um novo agendamento no sistema.

POST /agendamento

📝 Parâmetros Obrigatórios

Campo Tipo Descrição Exemplo
token string Token de autenticação (identifica automaticamente a clínica) "abc123xyz789"
id_cliente number ID do cliente/paciente 123
id_funcionario number ID do funcionário (obtido da consulta de horários) 4406
id_sala number ID da sala (obtido da consulta de horários) 1052
data_agendamento string Data do agendamento no formato YYYY-MM-DD "2025-06-25"
hora_inicial string Hora de início no formato HH:MM "14:00"
hora_final string Hora de término no formato HH:MM "15:00"
📌 Nota: O ID do serviço é configurado automaticamente no sistema para cada token e não precisa ser enviado na requisição.

📨 Exemplo de Requisição

curl -X POST https://api.northcrm.com.br/agendamento \
  -H "Content-Type: application/json" \
  -d '{
    "token": "abc123xyz789",
    "id_cliente": 123,
    "id_funcionario": 4406,
    "id_sala": 1052,
    "data_agendamento": "2025-06-25",
    "hora_inicial": "14:00",
    "hora_final": "15:00"
  }'
💡 Observação: O token identifica automaticamente a clínica e o serviço, simplificando a integração.

✅ Exemplo de Resposta (Sucesso)

{
  "sucesso": true,
  "agendamento_id": 456789,
  "mensagem": "Agendamento criado com sucesso",
  "detalhes": {
    "data": "2025-06-25",
    "hora_inicio": "14:00",
    "hora_fim": "15:00",
    "cliente": "Maria Santos",
    "funcionario": "Dr. João Silva",
    "sala": "Consultório 1"
  }
}

🛑 Cancelar Agendamento

Cancela um agendamento existente no sistema.

POST /cancelar-agendamento

📝 Parâmetros Obrigatórios

Campo Tipo Descrição Exemplo
token string Token de autenticação (identifica automaticamente a clínica) "abc123xyz789"
id_agendamento number ID do agendamento a ser cancelado 456789
motivo string (opcional) Motivo do cancelamento (armazenado no histórico) "Paciente desmarcou"
📌 Nota: O ID do agendamento é retornado no momento da criação do agendamento e pode ser armazenado no seu sistema para futuras ações como confirmação, reagendamento ou cancelamento.

📨 Exemplo de Requisição

curl -X POST https://api.northcrm.com.br/cancelar-agendamento \
  -H "Content-Type: application/json" \
  -d '{
    "token": "abc123xyz789",
    "id_agendamento": 456789,
    "motivo": "Paciente desmarcou"
  }'

✅ Exemplo de Resposta (Sucesso)

{
  "sucesso": true,
  "agendamento_id": 456789,
  "status": "cancelado",
  "mensagem": "Agendamento cancelado com sucesso"
}

❌ Exemplo de Resposta (Erro)

{
  "erro": "Agendamento não encontrado ou já cancelado."
}

🔄 Fluxo de Integração

🔑 Obter Token

No sistema North CRM você encontrará seu token de autenticação e esta documentação

👤 Cadastrar Lead

Use o endpoint /cadastrar-lead para criar novos leads ou verificar clientes existentes

🔍 Consultar Horários

Use o endpoint /horarios-disponiveis para obter os horários disponíveis

✅ Criar Agendamento

Use os dados retornados (codigoFuncionario e codigoSala) para criar o agendamento via /agendamento

🛑 Cancelar Agendamento (opcional)

Se necessário, utilize o endpoint /cancelar-agendamento para cancelar um agendamento existente

💻 Exemplo Prático Completo

// 1. Cadastrar lead
const leadResponse = await fetch('https://api.northcrm.com.br/cadastrar-lead', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    token: 'seu_token_aqui',
    telefone: '54999887766',
    nome: 'Maria Silva'
  })
});

const leadData = await leadResponse.json();
console.log('Lead:', leadData);

// 2. Consultar horários disponíveis
const horariosResponse = await fetch('https://api.northcrm.com.br/horarios-disponiveis', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    token: 'seu_token_aqui',
    data_inicial: '2025-06-23',
    data_final: '2025-06-25'
  })
});

const horarios = await horariosResponse.json();
console.log('Horários disponíveis:', horarios);

// 3. Selecionar um horário e criar agendamento
const horarioEscolhido = horarios[0]; // Primeiro horário disponível

const agendamentoResponse = await fetch('https://api.northcrm.com.br/agendamento', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    token: 'seu_token_aqui',
    id_cliente: leadData.cliente_id || leadData.lead_id,
    id_funcionario: horarioEscolhido.codigoFuncionario,
    id_sala: horarioEscolhido.codigoSala,
    data_agendamento: horarioEscolhido.data,
    hora_inicial: horarioEscolhido.horaDisponivel,
    hora_final: '15:00'
  })
});

const agendamentoData = await agendamentoResponse.json();
console.log('Agendamento:', agendamentoData);

// 4. (Opcional) Cancelar o agendamento
const cancelarResponse = await fetch('https://api.northcrm.com.br/cancelar-agendamento', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    token: 'seu_token_aqui',
    id_agendamento: agendamentoData.agendamento_id,
    motivo: 'Cancelamento de teste'
  })
});

const cancelamentoData = await cancelarResponse.json();
console.log('Cancelamento:', cancelamentoData);

🆘 Suporte

Em caso de dúvidas sobre a integração, entre em contato com nossa equipe de suporte através dos canais disponíveis no sistema North CRM.