DeskCRM · Declatrack

API REST — Guia de Integração

Criar, ler, alterar, excluir e listar registros de qualquer módulo do DeskCRM — com todos os campos, inclusive os customizados — a partir de um sistema externo.

Base https://deskcrm.com.br/webservice/WebserviceStandard Container WebserviceStandard Validada em produção · 12/07/2026

1 Visão geral e credenciais

Formato JSON (envie Content-Type: application/json). A API enxerga e faz exatamente o que o usuário do CRM vinculado à credencial pode fazer — perfis e compartilhamento valem na API.

As 3 credenciais — obrigatórias em toda requisição

CredencialOnde vaiO que é
Aplicação (nome + senha)HTTP Basic Auth (-u nome:senha)Registro criado em Web Service — Aplicações
Chave da APIHeader x-api-keyGerada automaticamente ao criar a aplicação
Token de sessãoHeader x-tokenObtido no login (seção 3); não vai na chamada de login

2 Criar as credenciais

Feito uma única vez, no DeskCRM, por um administrador — menu ⚙️ Configurações → Integração.

a

Aplicação — Web Service — Aplicações

  • + Adicionar → Tipo: WebserviceStandard · Estado: Ativo (marcar!) · Nome: ex. integracao · Senha forte
  • IPs permitidos (opcional, recomendado se o consumidor tem IP fixo) · URL pública: pode ficar vazio
  • Salvar e copiar a Chave da API exibida na lista (ícone 👁)
b

Usuário da API — Web Service — Users

  • Selecionar o container WebserviceStandard+ Criar
  • Servidor: a aplicação do passo a · Status: Ativo · Login: ex. integracao.api · Senha forte
  • Tipo: Permissões baseadas em usuário · Usuário: o usuário do CRM que empresta as permissões · Método de autenticação: Senha
💡

Crie um usuário do CRM dedicado (ex. “Integração”) com um perfil restrito ao necessário, em vez de vincular ao administrador — dá rastreabilidade e revogação limpa.

3 Autenticação (login → token)

POST/Users/Login
curl -u 'integracao:SENHA_DA_APLICACAO' \
  -H 'x-api-key: CHAVE_DA_API' \
  -H 'Content-Type: application/json' \
  -X POST 'https://deskcrm.com.br/webservice/WebserviceStandard/Users/Login' \
  -d '{"userName":"integracao.api","password":"SENHA_DO_USUARIO_API"}'

Resposta: {"status":1,"result":{"token":"…", …}} → guarde o token.

  • Validade do token: 24 h após o login ou 4 h sem uso — o que vencer primeiro.
  • Ao receber 401 em qualquer chamada, refaça o login e repita a chamada.
  • Logout (opcional): PUT /Users/Logout com os 3 headers.
🔑

Toda chamada daqui em diante leva as 3 credenciais: -u app:senha + header x-api-key + header x-token.

4 Descobrir módulos e todos os campos

GET/Modulesmódulos disponíveis para o usuário
GET/{Módulo}/Fieldstodos os campos do módulo

/Fields responde, por campo: name (nome técnico usado no JSON), label, type, mandatory (obrigatório), picklistvalues (valores aceitos em listas), referenceList (módulos referenciáveis), defaultvalueÉ a fonte da verdade: módulos e campos customizados aparecem aqui automaticamente.

Módulos principais do DeskCRM

Nome técnico (na URL)Nome na tela
AccountsCliente (Contas)
ContactsContatos
ProductsProdutos
SQuotesPropostas
SSalesProcessesNegócios
PlacascontratoPlacas do contrato
ServiceContractsContratos de serviço
DocumentsDocumentos
CalendarAgenda / Atividades

5 CRUD de registros

POST/{Módulo}/Recordcriar
curl -u 'integracao:SENHA' -H 'x-api-key: CHAVE' -H 'x-token: TOKEN' \
  -H 'Content-Type: application/json' \
  -X POST 'https://deskcrm.com.br/webservice/WebserviceStandard/Accounts/Record' \
  -d '{"accountname":"Empresa Exemplo LTDA","assigned_user_id":1,"cpf_cliente":"12345678900"}'

# → {"status":1,"result":{"id":1025,"name":"Empresa Exemplo LTDA"}}
PUT/{Módulo}/Record/{id}alterar — só os campos enviados mudam
curl … -X PUT '…/Accounts/Record/1025' -d '{"accountname":"Novo Nome"}'
⚠️

Sempre confira o skippedData na resposta. Campo com nome errado ou não editável é ignorado silenciosamente — não gera erro; ele aparece listado nesse array.

GET/{Módulo}/Record/{id}ler

Retorna os campos em formato de exibição. Com o header x-raw-data: 1, vem também o rawData (valores crus, como estão no banco).

DELETE/{Módulo}/Record/{id}excluir
🗑️

O DELETE move o registro para a Lixeira (recuperável pelo CRM). Não apaga definitivamente.

GET/{Módulo}/RecordsListlistar com filtros e paginação
HeaderFunçãoExemplo
x-row-limitquantidade por página (padrão 100)50
x-row-offsetdeslocamento (paginação)100
x-fieldsretornar só estes campos (JSON)["accountname","cpf_cliente"]
x-conditionfiltro (JSON — ver abaixo)
x-order-byordenação (JSON){"accountname":"ASC"}
x-row-countdevolve o total geral1
x-raw-datavalores crus1

Filtro (x-condition)

{"fieldName":"cpf_cliente","value":"12345678900","operator":"e"}

# composto:
{"condition":"AND","rules":[
  {"fieldName":"accounttype","value":"Customer","operator":"e"},
  {"fieldName":"createdtime","value":"2026-01-01","operator":"a"}
]}

Operadores comuns: e igual · n diferente · c contém · s começa com · a maior · m menor.

Outros endpoints úteis

GET/{Módulo}/RecordRelatedList/{id}/{MóduloRelacionado}relacionados
GET/{Módulo}/RecordHistory/{id}histórico de alterações
GET/{Módulo}/Privilegeso que o usuário da API pode fazer
GET/{Módulo}/CustomViewlistas customizadas (filtros salvos)

6 Formato dos valores por tipo de campo

Tipo de campoComo enviarExemplo
Texto / e-mail / telefonestring"Empresa X"
Lista de seleção (picklist)valor exato (ver /Fields)"INSTALAÇÃO"
DataAAAA-MM-DD"2026-07-12"
Data e horaAAAA-MM-DD HH:MM:SS"2026-07-12 14:30:00"
Responsável (assigned_user_id)id do usuário do CRM1
Referência a outro registrocrmid do registro1234
Caixa de seleção0 ou 11
Decimalponto como separador49.90
Moeda múltipla (ex. unit_price)JSON de moeda (moeda 1 = BRL){"currencyId":1,"currencies":{"1":{"price":49.9}}}
⚠️

unit_price (Preço Unitário de Produtos) é multiCurrency: número simples não funciona — use o JSON da tabela acima (estrutura validada neste servidor).

7 Erros e tratamento

HTTPSignificadoO que fazer
401credencial, api-key ou token inválido/expiradorefazer login e repetir a chamada
403sem permissão (perfil do usuário CRM)ajustar perfil/papel no CRM
404rota ou registro inexistenteconferir módulo e id
405método não permitidoconferir GET/POST/PUT/DELETE
400payload inválido (JSON malformado, obrigatório faltando)conferir o corpo enviado

Formato do erro: {"status":0,"error":{"message":"…","code":401}} — trate status: 0 como falha mesmo quando o HTTP vier 200.

Campos obrigatórios: consulte GET /{Módulo}/Fieldsmandatory: true. POST sem eles retorna 400/406.

8 Boas práticas

  • HTTPS; nunca versionar credenciais em repositório.
  • Restrinja por IP no cadastro da aplicação se o consumidor tiver IP fixo.
  • Um par aplicação + usuário por sistema integrado — rastreabilidade e revogação limpa.
  • Reaproveite o token pelas 24 h / 4 h — não faça login a cada chamada.
  • Histórico de acessos: tabela l_yf_api_login_history (mostra erros de login — útil no debug).

9 Teste de homologação executado

Ciclo completo executado em produção em 12/07/2026:

  • POST /Users/Login → token recebido
  • POST /Accounts/Record “TESTE API — PODE EXCLUIR” → criado (id 1025)
  • PUT /Accounts/Record/1025 alterou o nome (campo inexistente veio em skippedData)
  • GET /Accounts/Record/1025 confirmou a alteração
  • DELETE /Accounts/Record/1025 → lixeira
  • Registro e credenciais de teste removidos ao final
Documentação interna Declatrack · DeskCRM (YetiForce 7.1) Atualizado em 12/07/2026