SunchatPlus
StatusEm breveSuporteAcessar plataforma
Comece aquiGuia da plataformaAPI PúblicaAjudaNovidades
    • Visão geral da API
    • Autenticação e autorização
    • Primeira chamada
    • Recursos da API
    • Paginação, filtros e ordenação
    • Erros
    • Enumerações
    • Limites e boas práticas
    • Servidor MCP
    • Plugins
    • getListar anotações do negócio
    • postCriar anotação no negócio
    • getObter anotação do negócio
    • putSubstituir anotação do negócio
    • deleteExcluir anotação do negócio
    • getObter cálculo de imposto
    • putSubstituir cálculo de imposto
    • getListar cálculos de impostos
    • postCriar cálculo de imposto
    • getListar campos personalizados
    • postCriar campo personalizado
    • getObter campo personalizado
    • putSubstituir campo personalizado
    • deleteExcluir campo personalizado
    • getListar canais
    • getObter canal
    • getListar departamentos
    • postCriar departamento
    • getObter departamento
    • putSubstituir departamento
    • deleteExcluir departamento
    • getListar etiquetas
    • postCriar etiqueta
    • getObter etiqueta
    • putSubstituir etiqueta
    • deleteExcluir etiqueta
    • getObter grade de produto
    • putSubstituir grade de produto
    • postCriar grade de produto
    • postCriar variação e opção da grade
    • getListar grupos de produto
    • postCriar grupo de produto
    • getListar listas de contato
    • postCriar lista de contato
    • getObter lista de contato
    • putSubstituir lista de contato
    • deleteExcluir lista de contato
    • postEnviar mensagem de texto
    • postEnviar mensagem por template
    • postEnviar mensagem com mídia
    • postEnviar mensagem de áudio
    • getListar motivos de venda
    • postCriar motivo de venda
    • getObter motivo de venda
    • putSubstituir motivo de venda
    • deleteExcluir motivo de venda
    • getObter operação
    • putSubstituir operação
    • getListar operações
    • postCriar operação
    • getListar origens do negócio
    • postCriar origem do negócio
    • getObter origem do negócio
    • putSubstituir origem do negócio
    • deleteExcluir origem do negócio
    • postCriar solicitação de pagamento
    • getObter pessoa
    • putSubstituir pessoa
    • getListar pessoas
    • postCriar pessoa
    • putSubstituir endereço da pessoa
    • postCriar endereço da pessoa
    • getObter produto
    • putSubstituir produto
    • patchAtualizar produto parcialmente
    • getListar produtos
    • postCriar produto
    • getListar reuniões
    • postCriar reunião
    • getObter reunião
    • putAtualizar reunião
    • deleteExcluir reunião
    • postCancelar reunião
    • getObter script
    • putSubstituir script
    • deleteExcluir script
    • getListar scripts
    • postCriar script
    • getObter tabela de preço
    • putSubstituir tabela de preço
    • getListar tabelas de preço
    • postCriar tabela de preço
    • patchInativar tabelas de preço em lote
    • getObter ticket
    • getListar tickets
    • getObter ticket pelo código
    • postIncluir interação no ticket
    • patchAtualizar ticket parcialmente
    • putAlterar campo personalizado do ticket
    • getListar tipos de atividade
    • postCriar tipo de atividade
    • getObter tipo de atividade
    • putSubstituir tipo de atividade
    • deleteExcluir tipo de atividade
    • getListar vendas

Paginação, filtros e ordenação

Como percorrer listas grandes, filtrar resultados e ordenar as respostas da API pública.

AnteriorRecursos da APIPróximo Erros
SunchatPlus

© 2026 SunchatPlus. Todos os direitos reservados.

Todo endpoint de listagem da API pública usa o mesmo contrato de paginação, os mesmos parâmetros de página e o mesmo formato de resposta. Os filtros mudam de recurso para recurso, mas seguem convenções previsíveis.

Paginação

Duas variáveis de entrada:

ParâmetroPadrãoLimiteO que faz
page1mínimo 1Número da página, começando em 1
pageSize20máximo 200Quantidade de registros por página
curl "$SUNCHAT_BASE/v1/produto?page=2&pageSize=50" \
  -H "X-Ambiente: $SUNCHAT_CONTA" \
  -H "X-Authorization: X-Chave-Api $SUNCHAT_CHAVE"

Valor fora do intervalo devolve 422 com o campo apontado. A API não corrige o número em silêncio, então pedir pageSize=500 é erro, e não 200.

Formato da resposta

A resposta é sempre um objeto com os registros em Items e os contadores ao lado. Nunca um array solto na raiz.

{
  "Items": [
    { "Id": "8f14e45f-ea6d-4a1c-9c1f-3b7d2a5e9c04", "Nome": "Camiseta branca" }
  ],
  "Page": 2,
  "PageSize": 50,
  "TotalItems": 327,
  "TotalPages": 7,
  "HasNext": true,
  "HasPrevious": true
}
CampoO que é
ItemsOs registros da página
PageA página devolvida
PageSizeO tamanho de página aplicado
TotalItemsTotal de registros que atendem aos filtros, em todas as páginas
TotalPagesTotal de páginas com o pageSize atual
HasNexttrue se existe página seguinte
HasPrevioustrue se existe página anterior

Percorrendo todas as páginas

Use HasNext como condição de parada, e não uma comparação sua entre Page e TotalPages:

page=1
while :; do
  resposta=$(curl -s "$SUNCHAT_BASE/v1/produto?page=$page&pageSize=200" \
    -H "X-Ambiente: $SUNCHAT_CONTA" \
    -H "X-Authorization: X-Chave-Api $SUNCHAT_CHAVE")

  echo "$resposta" | jq -c '.Items[]'

  [ "$(echo "$resposta" | jq -r '.HasNext')" = "true" ] || break
  page=$((page + 1))
done

A paginação é por deslocamento, com page, e não por cursor. Se registros forem criados ou excluídos durante a varredura, um item pode aparecer duas vezes ou nenhuma, porque ele muda de página no meio do caminho. Em cargas grandes, prefira filtrar por um intervalo de datas fechado, algo como criacaoInicio e criacaoFim, que não se move enquanto você lê.

Filtros

Filtros vão na query string e são todos opcionais. Combiná-los aplica E lógico: ?ativo=true&search=camiseta devolve produtos ativos que também casam com "camiseta".

As convenções que se repetem em toda a API:

PadrãoSignificadoExemplo
searchBusca textual nos campos principais do recurso?search=maria
id...Filtra por um relacionamento?idContato=8f14e45f-...
ids...Aceita vários valores, repetindo o parâmetro?idsTags=a1b2...&idsTags=c3d4...
ativo, ativaSó ativos ou só inativos?ativo=false
...Inicio e ...FimIntervalo de datas, extremos incluídos?criacaoInicio=2026-08-01&criacaoFim=2026-08-31

Parâmetro desconhecido é ignorado, sem erro. Confira o nome exato na página do endpoint, porque um filtro escrito errado não reclama: ele só não filtra, e a resposta parece boa demais.

Ordenação

O parâmetro sort recebe o nome do campo. Prefixe com - para inverter, e separe por vírgula para ordenar por mais de um campo:

?sort=nome            → nome crescente
?sort=-preco          → preço decrescente
?sort=-preco,nome     → preço decrescente e, dentro de cada preço, nome crescente

O nome do campo não diferencia maiúsculas de minúsculas.

Campos aceitos por recurso

Cada recurso aceita a sua própria lista. Campo fora dela é ignorado, e a listagem volta para a ordenação padrão.

RecursoCampos aceitos em sort
Anotações de negóciodataDaCriacao
AtendimentosdataDaCriacao, dataDaAtualizacao, timestamp
Cálculos de impostosncm, cest, ufDestino
Campos personalizadosnome, ordem
Canaisnome, dataDaCriacao
Departamentosnome
Etiquetasnome
Grupos de produtonome, ordem
Listas de contatonome
Operaçõesnome, ativa
Origens do negócionome
Pessoasnome, codigo, cnpjCpf, dataDeCadastro
Pipelinesnome, id
Produtosnome, preco, codigoPrincipal
Scriptsnome, valido
Tabelas de preçonome, ativa, descontoMaximo, valorMinimoDeVenda
Ticketscodigo, assunto, abertoEm, fechadoEm, resolvidoEm, ultimaIteracao, dataDeVencimento, iteracoes
Tipos de atividadenome
Usuáriosnome, email, ativo
Variáveis globaisnome
Vendasdata, numero, valorTotal, nomePessoa

Os recursos que ficaram fora da tabela (contatos, reuniões, ações agendadas, negócios, atividades e motivos de venda) aceitam o parâmetro sort na requisição mas têm ordenação fixa. Enviá-lo não muda nada. Ordene do seu lado, ou acompanhe o Changelog da API.

Edit with