DRDiM Developers

Conecte o seu sistema à DRDiM

Uma API REST para o seu software conversar com o DRDiM Nexus: emita NF-e e NFS-e, receba o IBS e a CBS de cada nota, baixe o XML e o DANFE e sincronize produtos e clientes, tudo em JSON.

✓ REST + JSON ✓ Par de chaves por integração ✓ 15 permissões

Três passos até a primeira resposta

Não há cadastro separado de desenvolvedor: a integração usa uma chave criada dentro da empresa no DRDiM Nexus.

1. Tenha uma conta

A API usa os dados de uma empresa cadastrada no DRDiM Nexus. Crie a conta ou peça acesso ao cliente que você vai integrar.

2. Gere o par de chaves

No menu API & Integrações, em Chaves de API, crie uma chave para a integração e marque só as permissões de que ela precisa.

3. Faça a primeira chamada

Envie as duas chaves nos cabeçalhos X-Public-Key e X-Secret-Key. A resposta vem em JSON.

Duas chaves em toda requisição

Cada integração recebe uma chave pública e uma chave secreta. As duas vão nos cabeçalhos; não há login, sessão nem token para renovar.

Endereço basehttps://saas.drdimtecnologia.com.br/api/v1
X-Public-KeyIdentifica a integração. Começa com pk_.
X-Secret-KeyAutentica a requisição. Começa com sk_ e deve ficar só no seu servidor.
PermissõesCada rota exige uma permissão, como produtos.read ou clientes.create. A chave só acessa o que foi marcado ao criá-la.
cabeçalhos
curl "https://saas.drdimtecnologia.com.br/api/v1/clientes" \
  -H "X-Public-Key: pk_sua_chave_publica" \
  -H "X-Secret-Key: sk_sua_chave_secreta" \
  -H "Accept: application/json"

O que a API oferece hoje

Todos os caminhos partem de https://saas.drdimtecnologia.com.br/api/v1. A coluna Permissão mostra o que a chave precisa ter para usar a rota.

Produtos

Catálogo de produtos da empresa: consulta, cadastro e sincronização em lote.

MétodoCaminhoO que fazPermissão
GET/produtosLista paginada, com busca por nome, referência ou código de barrasprodutos.read
GET/produtos/{id}Detalhe de um produtoprodutos.read
POST/produtosCria um produtoprodutos.create
PUT/produtos/{id}Altera um produto (PATCH também é aceito)produtos.update
DELETE/produtos/{id}Exclui um produtoprodutos.delete
POST/produtos/syncCria ou atualiza vários produtos de uma vez, pela referênciaprodutos.sync

Clientes

Cadastro de clientes, com CPF/CNPJ e endereço.

MétodoCaminhoO que fazPermissão
GET/clientesLista paginada de clientesclientes.read
GET/clientes/{id}Detalhe de um clienteclientes.read
POST/clientesCria um clienteclientes.create
PUT/clientes/{id}Altera um clienteclientes.update
DELETE/clientes/{id}Exclui um clienteclientes.delete

NF-e

Emissão, cancelamento, consulta e download das notas fiscais da empresa.

MétodoCaminhoO que fazPermissão
POST/nfeRegistra a venda e emite a NF-e na SEFAZnfe.create
POST/nfe/{id}/transmitirTransmite de novo uma nota rejeitada, depois de corrigir o cadastronfe.create
POST/nfe/{id}/cancelarCancela uma nota autorizada (justificativa de 15 caracteres ou mais)nfe.cancel
GET/nfeLista paginada, com filtro por período (data_inicio, data_fim)nfe.read
GET/nfe/{id}Detalhe de uma nota, com cliente e itensnfe.read
GET/nfe/{id}/xmlDownload do XML autorizadonfe.read
GET/nfe/{id}/pdfDownload do DANFE em PDFnfe.read

NFS-e

Notas fiscais de serviço pelo Sistema Nacional da NFS-e (gov.br/nfse): emissão, cancelamento, consulta, XML e PDF.

MétodoCaminhoO que fazPermissãoSituação
POST/nfseRegistra a nota de serviço e transmite ao Sistema Nacionalnfse.createDisponível
POST/nfse/{id}/transmitirTransmite de novo uma nota rejeitada, depois de corrigir o cadastronfse.createDisponível
GET/nfseLista paginada, com filtro por estado e períodonfse.readDisponível
GET/nfse/{id}Detalhe de uma nota, com o serviçonfse.readDisponível
POST/nfse/{id}/cancelarCancela uma nota autorizada (justificativa de 15 caracteres ou mais)nfse.cancelDisponível
GET/nfse/{id}/xmlDownload do XML autorizadonfse.readDisponível
GET/nfse/{id}/pdfDownload do PDF da nota (DANFSe)nfse.readDisponível

Emita a nota com uma chamada

O POST /nfe registra a venda no DRDiM Nexus, baixa o estoque e transmite a nota à SEFAZ. A tributação vem do cadastro de cada produto e da natureza de operação; o seu sistema só informa cliente, itens e pagamento.

POST /api/v1/nfe
curl -X POST "https://saas.drdimtecnologia.com.br/api/v1/nfe" \
  -H "X-Public-Key: pk_sua_chave_publica" \
  -H "X-Secret-Key: sk_sua_chave_secreta" \
  -H "Content-Type: application/json" \
  -d '{
    "cliente_id": 318,
    "itens": [
      { "produto_id": 120, "quantidade": 2, "valor_unitario": 49.90 },
      { "produto_id": 119, "quantidade": 1, "valor_unitario": 39.90 }
    ],
    "desconto": 9.70,
    "tipo_pagamento": "15",
    "observacao": "Pedido 4471 da loja"
  }'
201 · nota autorizada
{
  "success": true,
  "message": "NFe emitida com sucesso",
  "data": {
    "id": 9041,
    "numero": 1532,
    "serie": 1,
    "chave": "3526...0015",
    "estado": "aprovado",
    "xml": "https://saas.drdimtecnologia.com.br/api/v1/nfe/9041/xml",
    "pdf": "https://saas.drdimtecnologia.com.br/api/v1/nfe/9041/pdf",
    "ibs_cbs": {
      "base_calculo": 130.00,
      "aliquota_ibs": 0.10, "valor_ibs": 0.13,
      "aliquota_cbs": 0.90, "valor_cbs": 1.17,
      "valor_total": 1.30
    }
  }
}
cliente_id e itensObrigatórios. O cliente precisa ter cidade cadastrada; cada item leva produto_id, quantidade e valor_unitario.
tipo_pagamentoCódigo do meio de pagamento da NF-e: 01 dinheiro, 03 crédito, 04 débito, 15 boleto, 17 PIX.
ibs_cbs na respostaBase, alíquotas e valores de IBS e CBS da nota. Vem null quando a empresa está no regime simplificado. O XML da nota ainda não destaca IBS/CBS.
NFS-e: POST /nfseEnvie cliente_id, servico_id, valor_servico e discriminacao. O tomador vem do cadastro do cliente.
Se a SEFAZ rejeitar, não envie a venda de novo. A resposta é 422, com o motivo em data.erro e a venda salva em data.id. Corrija o cadastro e chame POST /nfe/{id}/transmitir.
Antes da primeira nota. A empresa precisa ter o emitente configurado e o certificado digital enviado no DRDiM Nexus.

Sincronize o catálogo em uma chamada

O POST /produtos/sync recebe uma lista e decide sozinho: cria o produto se a referencia ainda não existe, atualiza se já existe. Cada item precisa de referencia, nome e valor_venda.

cURL
curl -X POST "https://saas.drdimtecnologia.com.br/api/v1/produtos/sync" \
  -H "X-Public-Key: pk_sua_chave_publica" \
  -H "X-Secret-Key: sk_sua_chave_secreta" \
  -H "Content-Type: application/json" \
  -d '{
    "produtos": [
      { "referencia": "CAM-001", "nome": "Camiseta básica", "valor_venda": 49.90 },
      { "referencia": "BON-014", "nome": "Boné aba reta",   "valor_venda": 39.90 }
    ]
  }'
JavaScript (Node.js 18+)
const resposta = await fetch('https://saas.drdimtecnologia.com.br/api/v1/produtos/sync', {
  method: 'POST',
  headers: {
    'X-Public-Key': process.env.DRDIM_PUBLIC_KEY,
    'X-Secret-Key': process.env.DRDIM_SECRET_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    produtos: [
      { referencia: 'CAM-001', nome: 'Camiseta básica', valor_venda: 49.90 },
      { referencia: 'BON-014', nome: 'Boné aba reta',   valor_venda: 39.90 },
    ],
  }),
});

const { data } = await resposta.json();
console.log(data.criados, 'criados,', data.atualizados, 'atualizados');

O mesmo formato em toda a API

Toda resposta em JSON traz success. Quando dá certo, o conteúdo vem em data; quando falha, message explica o motivo.

sucesso · POST /produtos/sync
{
  "success": true,
  "message": "Sincronização concluída",
  "data": { "criados": 1, "atualizados": 1, "erros": [] }
}
erro · 422
{
  "success": false,
  "message": "Dados inválidos",
  "errors": { "produtos.0.valor_venda": ["O campo valor_venda é obrigatório."] }
}

Códigos de erro

401Chaves ausentes, chave pública inválida ou chave secreta inválida
403Chave inativa ou expirada, ou sem permissão para o recurso
404Registro não encontrado na empresa da chave
409A nota não está no estado que a operação exige (ex.: cancelar nota não autorizada)
422Dados inválidos (errors lista cada campo) ou nota rejeitada pela SEFAZ (data.erro traz o motivo)
500Erro interno ao processar a requisição

Paginação e filtros

per_pageItens por página nas listagens. O padrão é 50 e o máximo é 100. Use page para avançar.
searchEm produtos, busca por nome, referência ou código de barras.
data_inicio e data_fimEm NF-e, filtram pela data da venda.

Você controla o que cada integração pode fazer

Chaves só no servidor

As duas chaves vão juntas em toda requisição. Guarde-as no backend, nunca em app, site ou repositório.

Permissão mínima

Cada chave tem a sua lista de permissões, por recurso e por ação. Uma integração de consulta não precisa poder excluir.

Troca sem parar tudo

Uma chave por integração: dá para desativar ou regenerar uma delas sem afetar as outras.

Dados isolados por empresa

A chave pertence a uma empresa e só enxerga os dados dela. O painel mostra a data e o IP do último uso.

Pronto para integrar?

Crie a conta, gere a sua chave em API & Integrações e faça a primeira chamada ainda hoje.