API de Clientes (Cliente)
sta API cria e gerencia clientes do modelo `Cliente`. Ela suporta listagem com filtros, criação/atualização (upsert) individual ou em lote, consulta de detalhe e atualização parcial. - Base path: `/a
Endpoints
GET /api/clients— Lista clientes com filtros opcionaisPOST /api/clients— Upsert (cria/atualiza) 1 ou vários clientesGET /api/clients/<id>— Detalhe de um clientePATCH /api/clients/<id>— Atualiza campos parciais de um cliente
Serialização do Cliente (resumo)
A resposta retorna o cliente normalizado com estes campos:
{
"id": 123,
"integration_id": "abc-123",
"name": "Maria Silva",
"cpf": "00011122233",
"phone": "+55 11 99999-0000",
"email": "[email protected]",
"birth_date": "1990-05-20",
"gender": "F",
"image": "https://...",
"observation": "VIP",
"risk_score": 10,
"created_at": "2025-01-01T12:34:56",
"updated_at": "2025-01-02T09:00:00",
"age": 35,
"is_blocked": false
}Campos aceitos no payload
A API aceita dois formatos de entrada. Você pode usar qualquer um; a API normaliza para o formato interno.
Formato simplificado:
name,cpf,phone,email,birth_date,gender,image,integration_id
Regras importantes:
Upsert usa, nesta ordem de prioridade,
integration_idoucpf.Datas de nascimento aceitas:
YYYY-MM-DDouDD/MM/YYYY.Strings vazias (
"") ounullNÃO sobrescrevem valores existentes.Ao criar/alterar e houver mudança relevante, o campo
ageé recalculado automaticamente.
Listar clientes — GET /api/clients
Query params:
cpf: filtra por CPF exato.id_beepay: filtra por id_beepay exato.search: busca por nome ou CPF (icontains).limit: número máximo de resultados (padrão: 50).
Resposta:
Exemplo:
Upsert em lote/único — POST /api/clients
Aceita um objeto ou uma lista de objetos.
Tenta localizar por
integration_id; se ausente, porcpf.Aplica somente campos não vazios e diferentes dos já persistidos.
Resposta (sempre agrega o resultado; sucesso parcial possível):
indexrefere-se à posição do item na lista enviada.Status HTTP:
201se houve pelo menos um item criado/atualizado; senão400.
Exemplos:
Objeto único (formato simplificado):
Em lote (misto, com erro em um item):
Detalhe — GET /api/clients/
Exemplo:
404caso o cliente não exista.
Atualização parcial — PATCH /api/clients/
Aceita tanto formato simplificado quanto interno.
Campos vazios não sobrescrevem.
Se
birth_datemudar para um valor válido, a idade é recalculada.
Exemplo:
Códigos de status
200— sucesso em GET/PATCH201— sucesso em POST (houve pelo menos uma criação/atualização)400— erro de validação ou nenhum item processado com sucesso no POST401— não autenticado404— recurso não encontrado (GET /api/clients/<id>)
Notas e boas práticas
Idempotência: enviar novamente um mesmo payload com o mesmo
integration_idoucpfnão cria duplicados; atualiza campos não vazios.Normalização de datas: prefira
YYYY-MM-DDpara evitar ambiguidades.Telefones/emails/nome: são tratados como strings; remoção (limpar valor) não é suportada via string vazia, apenas omitindo o campo ou aplicando regra específica no backend futuro.
Exemplos com Python (requests)
Atualizado