Smart: Saldo de Clientes Particulares

Endpoints da WebApiAlcance para o CRUD de saldos de clientes particulares consumido pelo produto Smart. Cada registro representa um movimento (recebimento/débito) de um cliente particular, com a forma de pagamento, o valor e a referência ao documento (nfx_numero) de origem. Os endpoints cobrem listagem com filtro por CNPJ e paginação, consulta por ID, criação, atualização e exclusão.

Todos os endpoints exigem autenticação. Veja Autenticação para o fluxo de API Key. O Swagger oficial está em api.contabilidadealcance.com.br/docs.

Campo `valor` sai como string

O campo valor deste domínio é Decimal no schema (não float), para preservar a precisão do valor gravado no banco. O Pydantic serializa Decimal como string em JSON: por exemplo, "valor": "250.75", não "valor": 250.75. Faça a conversão explícita (Number(...)/parseFloat) no consumidor.

Base path

/api/v1/smart-saldo-clientes-particulares

Escopos necessários

  • smart_saldo_clientes_particulares:read - listagem e consulta por ID
  • smart_saldo_clientes_particulares:write - criação, atualização e exclusão

O escopo é derivado do prefixo público da rota: /smart-saldo-clientes-particulares vira o recurso smart_saldo_clientes_particulares (hífen → underscore), e o método HTTP define a ação (read para GET, write para POST/PUT/PATCH/DELETE).

Endpoints

GET /smart-saldo-clientes-particulares/

Lista os saldos de clientes particulares, com filtro opcional por CNPJ e paginação. Lista vazia é um estado válido - o retorno normal é 200 OK com data: [], não um erro.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
cnpjstrquerynãoFiltra os registros pelo CNPJ informado.
limitintquerynãoItens por página. Entre 1 e 500. Padrão 100.
offsetintquerynãoDeslocamento de paginação. Padrão 0.

Request

Sem corpo de requisição.

Response 200 OK

{
  "status": "success",
  "message": "Saldos de clientes particulares recuperados com sucesso",
  "data": [
    {
      "id": 2101,
      "cnpj": "12345678000199",
      "cfg_emp": "HOSP01",
      "rdi_mte_serie": "1",
      "rdi_mte_seq": 5502,
      "valor": "250.75",
      "rdi_forma_pag": "PIX",
      "gcc_descr": "PARTICULARES",
      "str_nome": "MARIA DA SILVA SANTOS",
      "mte_tipo": "REC",
      "mte_dthr": "2026-01-10T14:30:00",
      "v_dt": "2026-01-10T00:00:00",
      "nfx_numero": "8821",
      "data_hora_criacao": "2026-01-15T10:00:00"
    }
  ]
}

Escopo: smart_saldo_clientes_particulares:read

GET /smart-saldo-clientes-particulares/{smart_saldo_id}

Busca um saldo de cliente particular pelo ID.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
smart_saldo_idintpathsimID do saldo de cliente particular.

Request

Sem corpo de requisição.

Response 200 OK

{
  "status": "success",
  "message": "Saldo de cliente particular recuperado com sucesso",
  "data": {
    "id": 2101,
    "cnpj": "12345678000199",
    "valor": "250.75",
    "...": "demais campos como em SmartSaldoClientesParticularesRead"
  }
}

Quando o ID não existe, retorna 404 Not Found com {"message": "Saldo de cliente particular não encontrado."}. Escopo: smart_saldo_clientes_particulares:read

POST /smart-saldo-clientes-particulares/

Cria um novo saldo de cliente particular.

Parâmetros

Este endpoint não recebe parâmetros de rota ou query. O corpo é o schema SmartSaldoClientesParticularesCreate.

Request

{
  "cnpj": "12.345.678/0001-99",
  "cfg_emp": "HOSP01",
  "rdi_mte_serie": "1",
  "rdi_mte_seq": 5502,
  "valor": 250.75,
  "rdi_forma_pag": "PIX",
  "gcc_descr": "PARTICULARES",
  "str_nome": "MARIA DA SILVA SANTOS",
  "mte_tipo": "REC",
  "mte_dthr": "2026-01-10T14:30:00",
  "v_dt": "2026-01-10T00:00:00",
  "nfx_numero": "8821"
}

Response 201 Created

{
  "status": "success",
  "message": "Saldo de cliente particular criado com sucesso",
  "data": {
    "id": 2101,
    "cnpj": "12345678000199",
    "valor": "250.75",
    "...": "demais campos como em SmartSaldoClientesParticularesRead"
  }
}

Em falha inesperada ao persistir, retorna 500 Internal Server Error com {"message": "Não foi possível criar o saldo de cliente particular."}. Escopo: smart_saldo_clientes_particulares:write

PUT /smart-saldo-clientes-particulares/{smart_saldo_id}

Atualiza um saldo de cliente particular existente. O cnpj não é editável por este endpoint - o schema de atualização não o inclui.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
smart_saldo_idintpathsimID do saldo de cliente particular.

O corpo é o schema SmartSaldoClientesParticularesUpdate, com todos os campos opcionais.

Request

{
  "valor": 260.00,
  "rdi_forma_pag": "CARTAO"
}

Response 200 OK

{
  "status": "success",
  "message": "Saldo de cliente particular atualizado com sucesso",
  "data": {
    "id": 2101,
    "cnpj": "12345678000199",
    "valor": "260.00",
    "rdi_forma_pag": "CARTAO",
    "...": "demais campos como em SmartSaldoClientesParticularesRead"
  }
}

Quando o ID não existe, retorna 404 Not Found com {"message": "Saldo de cliente particular não encontrado."}. Escopo: smart_saldo_clientes_particulares:write

DELETE /smart-saldo-clientes-particulares/{smart_saldo_id}

Remove um saldo de cliente particular.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
smart_saldo_idintpathsimID do saldo de cliente particular.

Request

Sem corpo de requisição.

Response 200 OK

{
  "status": "success",
  "message": "Saldo de cliente particular removido com sucesso",
  "data": null
}

Quando o ID não existe, retorna 404 Not Found com {"message": "Saldo de cliente particular não encontrado."}. Escopo: smart_saldo_clientes_particulares:write

Schemas

SmartSaldoClientesParticularesCreate

Corpo do POST /smart-saldo-clientes-particulares/. Todos os campos são opcionais no schema (nenhum é obrigatório para o Pydantic aceitar o payload), mas cnpj é a chave prática de identificação do cliente.

CampoTipoObservações
cnpjstrMáx. 30 caracteres.
cfg_empstrMáx. 300 caracteres. Código/config da empresa de origem.
rdi_mte_seriestrMáx. 20 caracteres. Série do documento de movimento.
rdi_mte_seqintSequencial do movimento.
valorDecimalValor do movimento.
rdi_forma_pagstrMáx. 20 caracteres. Forma de pagamento.
gcc_descrstrMáx. 300 caracteres. Descrição do grupo/centro de custo.
str_nomestrMáx. 300 caracteres. Nome do cliente particular.
mte_tipostrMáx. 20 caracteres. Tipo do movimento (ex.: recebimento, débito).
mte_dthrdatetimeData/hora do movimento.
v_dtdatetimeData de referência do movimento.
nfx_numerostrMáx. 20 caracteres. Número do documento de origem.

SmartSaldoClientesParticularesUpdate

Corpo do PUT /smart-saldo-clientes-particulares/{smart_saldo_id}. Mesmos campos de SmartSaldoClientesParticularesCreate, exceto cnpj - trocar o CNPJ dono do registro não é permitido por este endpoint. Todos os campos são opcionais.

SmartSaldoClientesParticularesRead

Retornado nas listagens e nas respostas de criação/atualização. Estende SmartSaldoClientesParticularesCreate com:

CampoTipoNotas
idintIdentificador do registro.
data_hora_criacaodatetimeData/hora de criação do registro.

Notas

  • Toda resposta segue o envelope { status: "success", message, data }.
  • O campo valor é Decimal e trafega como string em JSON, tanto na entrada (aceita número ou string) quanto na saída (sempre string).
  • Erros de negócio manualmente sinalizados pela rota (404 Not Found, 500 Internal Server Error) seguem o formato { "message": "..." } - não usam o campo detail.
  • Erros de validação de schema (tipo/formato inválido no payload) seguem o padrão do FastAPI: 422 Unprocessable Entity com { "detail": [...] }.
  • GET /smart-saldo-clientes-particulares/ sempre retorna 200 OK; lista vazia (data: []) é estado normal, não um erro.
  • O filtro ?cnpj= aceita o CNPJ com ou sem máscara; internamente é normalizado antes da consulta.