API v1 — Estável

Desenvolva sobre a Kolva

API RESTful para integrar as suas ferramentas com a Kolva. Faça a gestão de clientes, negócios, visitas e contactos por programação. Webhooks em tempo real para cada evento.

Especificação OpenAPI 3.1

Autenticação

Autenticação por chave de API

Gere as suas chaves de API em Definições → Programador no seu painel de administração Kolva. Cada chave tem permissões delimitadas e pode ser revogada a qualquer momento.

Autenticação por cabeçalho

Método recomendado

# Opção 1: cabeçalho X-Kolva-Key
X-Kolva-Key: kolva_sk_abc123...

# Opção 2: token Bearer
Authorization: Bearer kolva_sk_abc123...

Scopes disponíveis

Permissões granulares

read:clients
write:clients
read:deals
write:deals
read:visits
write:visits
read:finance
* (all)

Endpoints

Recursos RESTful

Todos os endpoints seguem as convenções REST. As respostas são em JSON. Paginação com ?page= e ?limit= (máx. 100).

Clientes

/api/v1/clients

Faça a gestão da sua base de clientes — listar, criar, atualizar, desativar.

GETPOSTPUTDELETE
Scopes: read:clients, write:clients

Contactos

/api/v1/contacts

CRUD dos contactos dentro das fichas de cliente (matriz de contactos JSONB).

GETPOSTPUTDELETE
Scopes: read:clients, write:clients

Negócios

/api/v1/deals

Encomendas e negócios — criar, atualizar o estado, acompanhar a faturação.

GETPOSTPUTDELETE
Scopes: read:deals, write:deals

Visitas

/api/v1/visits

Visitas no terreno — planear, acompanhar o check-in/check-out, gerir os planeamentos.

GETPOSTPUTDELETE
Scopes: read:visits, write:visits

Limites de taxa

Limites de utilização justa

100

pedidos / minuto

429

estado em caso de excesso

Retry-After

cabeçalho incluído

Webhooks

Notificações de eventos em tempo real

Subscreva os eventos em Definições → Programador → Webhooks. A Kolva envia pedidos POST para o seu URL, com verificação de assinatura HMAC-SHA256.

deal_created

Acionado quando é criado um novo negócio/encomenda

deal_updated

Acionado quando o estado ou o montante de um negócio muda

client_created

Acionado quando é adicionado um novo cliente

client_updated

Acionado quando os dados de um cliente são alterados

visit_completed

Acionado quando um comercial de terreno faz check-out

invoice_created

Acionado quando é gerada uma fatura

order_created

Acionado quando é registada uma encomenda

contact_updated

Acionado quando um contacto de cliente é alterado

Verificação da assinatura

Cada POST de webhook inclui um cabeçalho X-Kolva-Signature . Verifique-o com HMAC-SHA256, usando o segredo do seu webhook.

// Verificação em Node.js
const crypto = require('crypto');
const signature = req.headers['x-kolva-signature'];
const expected = crypto
  .createHmac('sha256', webhookSecret)
  .update(JSON.stringify(req.body))
  .digest('hex');
const valid = crypto.timingSafeEqual(
  Buffer.from(signature), Buffer.from(expected)
);

Política de repetição: 3 tentativas com backoff exponencial (1 min, 5 min, 30 min). Ao fim de 10 falhas consecutivas, o webhook é desativado automaticamente.

Exemplos

Arranque rápido

cURL — Listar clientes
curl -X GET "https://kolva.ai/api/v1/clients?page=1&limit=10" \
  -H "X-Kolva-Key: kolva_sk_your_key_here"
cURL — Criar um negócio
curl -X POST "https://kolva.ai/api/v1/deals" \
  -H "X-Kolva-Key: kolva_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"client_id": "uuid", "total_ht": 1500, "currency": "EUR"}'
JavaScript — Listar visitas
const response = await fetch("https://kolva.ai/api/v1/visits?status=completed", {
  headers: { "X-Kolva-Key": process.env.KOLVA_API_KEY },
});
const { data, total } = await response.json();
console.log(`Found ${total} completed visits`);
JavaScript — Criar uma visita
const visit = await fetch("https://kolva.ai/api/v1/visits", {
  method: "POST",
  headers: {
    "X-Kolva-Key": process.env.KOLVA_API_KEY,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    client_id: "client-uuid",
    commercial_id: "rep-uuid",
    planned_date: "2026-03-15",
    type: "routine",
  }),
});
const { data } = await visit.json();
// Retry the same operation with the same UUID. A replay returns HTTP 200;
// the initial creation returns HTTP 201.

Pronto para integrar?

Crie a sua chave de API nas definições da Kolva ou consulte a especificação OpenAPI para a referência completa.