Desenvolvimento Orientado a Especificações

O SimpleCRM disponibiliza especificações da API em formatos legíveis por máquina, permitindo que desenvolvedores e assistentes de IA gerem automaticamente código cliente, SDKs e frontends completos. Em vez de ler a documentação manualmente, aponte suas ferramentas para nossas specs e deixe elas fazerem o trabalho.

Construa Sua Própria Interface

Siga estes passos para criar um frontend personalizado, CLI ou integração servidor a partir da nossa spec.

1

Baixe a especificação

Obtenha a spec OpenAPI ou a referência para LLMs para usar como contrato de desenvolvimento.

bash
# Baixar a spec OpenAPI
curl -o openapi.json https://crm.acessocomercial.com/openapi.json

# Ou a referência otimizada para LLMs
curl -o api-reference.txt https://crm.acessocomercial.com/llms-full.txt

# Ou as specs em Markdown
curl -o api-reference.md https://crm.acessocomercial.com/docs/specs/api-reference.md
curl -o webhooks.md https://crm.acessocomercial.com/docs/specs/webhooks.md
curl -o data-models.md https://crm.acessocomercial.com/docs/specs/data-models.md
2

Gere tipos e código cliente

Use geradores de código OpenAPI para criar clientes tipados na sua linguagem preferida. Isso gera objetos de requisição/resposta tipados sem trabalho manual.

bash
# Cliente TypeScript com openapi-typescript
npx openapi-typescript openapi.json -o src/api-types.ts

# Ou gere um cliente completo com Orval
npx orval --input openapi.json --output src/api-client
3

Implemente sua interface

Construa sua UI personalizada, CLI ou integração servidor usando os tipos gerados. Todos os nomes de campos, regras obrigatório/opcional e formatos de resposta já estão definidos.

typescript
import type { paths } from './api-types';

type ListaContatos = paths['/api/contacts']['get']['responses']['200'];

const API_KEY = 'crm_sk_sua_chave_aqui';
const BASE_URL = 'https://crm.acessocomercial.com/api';

async function listarContatos(pagina = 1, limite = 20): Promise<ListaContatos> {
  const resposta = await fetch(
    `${BASE_URL}/contacts?page=${pagina}&limit=${limite}`,
    { headers: { 'X-API-Key': API_KEY } }
  );
  return resposta.json();
}
4

Teste contra a API

Use sua API Key para validar sua integração contra a API de produção. Todas as respostas seguem exatamente a especificação.

bash
# Criar um contato
curl -X POST https://crm.acessocomercial.com/api/contacts \
  -H "X-API-Key: crm_sk_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{"name": "Contato Teste", "email": "teste@exemplo.com"}'

# Listar negócios com filtros
curl "https://crm.acessocomercial.com/api/deals?status=open&stage=negociacao" \
  -H "X-API-Key: crm_sk_sua_chave_aqui"

Use com Assistentes de IA

Aponte qualquer LLM (ChatGPT, Claude, Copilot, etc.) para nossos arquivos de especificação. Exemplos de prompts que funcionam diretamente:

Gerar um frontend completo

Passe a URL da spec completa para um LLM e deixe ele construir um frontend inteiro do zero.

Leia a spec da API em https://crm.acessocomercial.com/llms-full.txt e construa um dashboard React que exiba contatos, funil de negócios e atividades recentes. Use o header X-API-Key para autenticação.

Construir uma ferramenta CLI

LLMs conseguem gerar ferramentas CLI diretamente a partir da spec OpenAPI.

Usando a spec OpenAPI em https://crm.acessocomercial.com/openapi.json, crie uma ferramenta CLI em Node.js que liste contatos, crie negócios e gerencie tarefas. Use commander para parsing de argumentos.

Criar um receptor de webhooks

As specs de webhook incluem formatos de evento e detalhes de verificação de assinatura.

Leia https://crm.acessocomercial.com/docs/specs/webhooks.md e construa um receptor de webhooks em Express.js que valide o X-Webhook-Signature, processe eventos contact.created e deal.updated, e salve no banco de dados.

Gerar um SDK Python

A spec OpenAPI tem tudo necessário para gerar SDKs tipados em qualquer linguagem.

Baixe https://crm.acessocomercial.com/openapi.json e gere um SDK Python tipado usando dataclasses. Inclua métodos para todas as operações CRUD de contatos, empresas e negócios.

Exemplos de Integração

Buscar e exibir contatos

typescript
const API_KEY = 'crm_sk_sua_chave_aqui';
const BASE = 'https://crm.acessocomercial.com/api';

interface Contato {
  id: string;
  name: string;
  email: string;
  phone: string;
  position: string;
  companyId: string;
  tags: string[];
  createdAt: string;
}

interface RespostaPaginada<T> {
  data: T[];
  total: number;
  page: number;
  limit: number;
}

async function buscarContatos(
  busca?: string,
  pagina = 1
): Promise<RespostaPaginada<Contato>> {
  const params = new URLSearchParams({
    page: String(pagina),
    limit: '20',
  });
  if (busca) params.set('search', busca);

  const resposta = await fetch(`${BASE}/contacts?${params}`, {
    headers: { 'X-API-Key': API_KEY },
  });

  if (!resposta.ok) {
    throw new Error(`Erro na API: ${resposta.status}`);
  }

  return resposta.json();
}

Criar um negócio no funil de vendas

typescript
interface CriarNegocioRequest {
  title: string;
  value: number;
  stage?: string;
  probability?: number;
  companyId?: string;
  contactIds?: string[];
  expectedCloseDate?: string;
}

async function criarNegocio(negocio: CriarNegocioRequest) {
  const resposta = await fetch(`${BASE}/deals`, {
    method: 'POST',
    headers: {
      'X-API-Key': API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(negocio),
  });

  if (!resposta.ok) {
    const erro = await resposta.json();
    throw new Error(erro.error ?? 'Falha ao criar negócio');
  }

  return resposta.json();
}

// Exemplo de uso
const novoNegocio = await criarNegocio({
  title: 'Licença Enterprise - Acme Corp',
  value: 50000,
  stage: 'proposta',
  probability: 60,
  expectedCloseDate: '2026-07-15T00:00:00Z',
});

Receptor de webhooks com verificação de assinatura

typescript
import { createHmac } from 'node:crypto';

function verificarAssinaturaWebhook(
  payload: string,
  assinatura: string,
  secret: string
): boolean {
  const esperado = createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return esperado === assinatura;
}

// Handler Express.js
app.post('/webhooks/simplecrm', (req, res) => {
  const assinatura = req.headers['x-webhook-signature'] as string;
  const corpoBruto = JSON.stringify(req.body);

  if (!verificarAssinaturaWebhook(corpoBruto, assinatura, WEBHOOK_SECRET)) {
    return res.status(401).json({ error: 'Assinatura inválida' });
  }

  const { event, data } = req.body;

  switch (event) {
    case 'contact.created':
      console.log('Novo contato:', data.name);
      break;
    case 'deal.updated':
      console.log('Negócio movido para:', data.stage);
      break;
    case 'invoice.paid':
      console.log('Fatura paga:', data.number);
      break;
  }

  res.status(200).json({ received: true });
});

Este site utiliza cookies

Utilizamos cookies essenciais para o funcionamento da plataforma e cookies de análise para melhorar sua experiência. Ao continuar navegando, você concorda com nossa Política de Privacidade e Termos de Uso.