Skip to main content
Esta página reúne o que você precisa para usar o sparkcrm em produção: erros, retentativas, timeouts e logs.

Erros HTTP

Respostas 4xx e 5xx e falhas de rede lançam subclasses de SparkCRM.APIError: O corpo de erro da API fica em err.error e tem o formato { statusCode, code, message }. Use code na lógica do seu código e message para exibir ou registrar. Os códigos estão na Introdução à API e nas páginas de cada recurso.

Retentativas

Por padrão, o cliente repete a requisição até 2 vezes, com espera crescente entre as tentativas, quando recebe:
  • erro de conexão;
  • 408, 409 ou 429;
  • 5xx.
Para mudar o padrão de todas as chamadas:
Ou só de uma chamada:
Retentativas automáticas podem repetir operações que não são idempotentes. Antes de repetir campaigns.start depois de um timeout, consulte a campanha com campaigns.retrieve para ver se a execução já começou.

Timeouts

O padrão é 60 segundos por tentativa. Com retentativas, o tempo total pode ser maior.

Resposta HTTP bruta

Os métodos retornam APIPromise<T>. Para ler status e cabeçalhos sem ler o corpo:
Para receber os dados e a Response juntos:

Logs

Defina o nível com a variável SPARK_CRM_LOG ou com a opção logLevel: debug, info, warn, error ou off. O padrão é warn. No nível debug, requisições e respostas aparecem no log, inclusive dados de contatos. Evite esse nível em produção. Para usar seu próprio logger, como Pino ou Winston:

Fetch e proxy

Passe uma implementação própria em fetch ou opções extras em fetchOptions, como um dispatcher do Undici para usar proxy no Node. Há exemplos por runtime no README do repositório.

Parâmetros fora dos tipos

O SDK não valida os campos em tempo de execução. Para enviar um parâmetro que a API já aceita, mas que ainda não está nos tipos da sua versão:
Para chamar uma rota que ainda não tem método no SDK, use client.get, client.post, client.put, client.patch ou client.delete:

Versões

O pacote segue versionamento semântico. Mudanças só de tipos podem sair em versões minor, sem quebrar o código em execução. Acompanhe as versões no npm e abra issues no GitHub.

Leitura relacionada