Pular para o conteúdo principal

Listar fichas em atraso

Cenário: você precisa de todas as fichas com atraso acima de um patamar, em um determinado produto, para alimentar um motor de propostas ou um data warehouse.

Escopo necessário: fichas.read.

Fluxo

  1. GET /v1/fichas com filtros (idProduto, atrasoMin, atrasoMax, pageSize=200).
  2. Iterar enquanto vier nextPageToken.
  3. Acumular ou processar cada lote.

A API limita pageSize em 200. Para 50 mil fichas, isso são 250 chamadas. Cada chamada é rápida (típico < 200ms), o gargalo é a serialização do seu lado.

Implementação

from banqer_client import paginar

def fichas_em_atraso(id_produto: int, atraso_min: int = 90):
"""Itera por todas as fichas em atraso, paginadas automaticamente."""
return paginar(
"/v1/fichas",
params={
"idProduto": id_produto,
"atrasoMin": atraso_min,
},
key="fichas",
)

# Uso: extrair para CSV
import csv
with open("fichas_atraso_90mais.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["id_exibicao", "atraso", "saldo", "uf", "situacao"])
total = 0
for ficha in fichas_em_atraso(id_produto=23, atraso_min=90):
writer.writerow([
ficha["idFichaCobrancaExibicao"],
ficha["atraso"],
ficha.get("saldoDevedor", 0),
ficha.get("uf", ""),
ficha.get("situacaoDivida", ""),
])
total += 1
print(f"Exportadas {total} fichas.")

Pontos importantes

  • Use pageSize=200 (o máximo) para reduzir o número de chamadas. Pedir mais não retorna mais: o servidor reduz silenciosamente.
  • Filtre no servidor sempre que possível: filtros como atrasoMin, atrasoMax, uf, idProduto, emCobranca são aplicados antes da paginação. Filtrar no seu lado significa baixar dados que serão descartados.
  • O cursor expira? Não. O cursor codifica o último ID lido; você pode pausar a iteração e retomar mais tarde com o mesmo pageToken. Mas dados podem ter sido inseridos entre as duas execuções e ficarão de fora.
  • Não confie em ordenação por outro campo: o servidor ordena por idFichaCobranca (UUID) crescente, e essa é a única ordem garantida. Se precisar ordenar por atraso ou saldo, ordene no seu lado após coletar.
  • Snapshots consistentes: a API não oferece transação de leitura. Para um snapshot exato, faça a coleta dentro de uma janela curta (alguns minutos) e aceite uma margem de variação.

Filtros disponíveis em /v1/fichas

Todos opcionais e combináveis:

ParâmetroTipoSignificado
idProdutointProduto da ficha (sua credencial só vê produtos da sua lista)
idCredorintCredor do produto
idCarteiraintCarteira (faixa de atraso)
atrasoMinintAtraso mínimo em dias
atrasoMaxintAtraso máximo em dias
ufstringUF (2 letras maiúsculas: BA, ES)
idSituacaoDividaint1 Em Atraso, 2 Em Dia, 3 Finalizado
emCobrancaboolSe true, apenas fichas atualmente em cobrança
pageSizeintTamanho da página (padrão 50, máximo 200)
pageTokenstringCursor da próxima página

Consulte a Referência da API para a lista completa e tipos exatos de cada filtro.