Compras e Estoque

Endpoints da WebApiAlcance para gerenciar registros de compras vinculadas ao estoque - dados de notas fiscais de entrada, fornecedores, contas a pagar e valores originados do Klingo ERP. Cobrem criação, listagem com filtros e paginação, detalhamento por ID, atualização parcial 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.

Base path

/api/v1/compras-estoque

Escopos necessários

  • compras_estoque:read - listagem e detalhamento
  • compras_estoque:write - criação, atualização e exclusão

O escopo é derivado da rota: o prefixo /compras-estoque vira o recurso compras_estoque (hífen → underscore), e o método HTTP define a ação (read para GET, write para POST/PUT/DELETE).

Endpoints

POST /compras-estoque/

Cria um novo registro de compras/estoque. O id e o data_hora_criacao são gerados pelo servidor - não são aceitos no body.

Parâmetros

Este endpoint não recebe parâmetros de rota ou query - os dados vão no corpo da requisição (ComprasEstoqueCreate), com todos os campos opcionais que descrevem a nota fiscal de entrada, o fornecedor, a conta a pagar e os valores.

Request

{
  "cnpj": "12345678000199",
  "cfg_emp": "ACME SERVICOS LTDA",
  "cct_descr": "Fornecedores nacionais",
  "nfe_serie": 1,
  "nfe_num": 45678,
  "nfe_fne_cod": 320,
  "nfe_dt_entrada": "2026-06-30",
  "fne_nome_fantasia": "Distribuidora Beta",
  "cpg_serie": 1,
  "cpg_num": 8890,
  "gcc_descr": "Mercadorias para revenda",
  "desconto": 0,
  "frete": 1500,
  "despesas": 0,
  "valor": 128000
}

Response 201 Created

{
  "success": true,
  "message": "Registro de compras/estoque criado com sucesso",
  "data": {
    "id": 501,
    "cnpj": "12345678000199",
    "cfg_emp": "ACME SERVICOS LTDA",
    "cct_descr": "Fornecedores nacionais",
    "nfe_serie": 1,
    "nfe_num": 45678,
    "nfe_fne_cod": 320,
    "nfe_dt_entrada": "2026-06-30",
    "fne_nome_fantasia": "Distribuidora Beta",
    "cpg_serie": 1,
    "cpg_num": 8890,
    "gcc_descr": "Mercadorias para revenda",
    "desconto": 0,
    "frete": 1500,
    "despesas": 0,
    "valor": 128000,
    "data_hora_criacao": "2026-06-30T14:22:05"
  }
}

Em caso de dados inválidos, retorna 422 Unprocessable Entity com o detail do erro de validação. Escopo: compras_estoque:write

GET /compras-estoque/

Lista os registros de compras/estoque, com filtros opcionais e paginação. Lista vazia é um estado válido - sempre retorna 200 OK, inclusive com data: [] e a mensagem "Nenhum registro de compras/estoque encontrado.".

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
cfg_empstrquerynãoFiltra por empresa (cfg_emp).
gcc_descrstrquerynãoFiltra por grupo de conta contábil.
limitint (1..500)querynãoLimite de itens por página. Default 100.
offsetint (>= 0)querynãoOffset de paginação. Default 0.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Registros de compras/estoque recuperados com sucesso",
  "data": [
    {
      "id": 501,
      "cnpj": "12345678000199",
      "cfg_emp": "ACME SERVICOS LTDA",
      "cct_descr": "Fornecedores nacionais",
      "nfe_serie": 1,
      "nfe_num": 45678,
      "nfe_fne_cod": 320,
      "nfe_dt_entrada": "2026-06-30",
      "fne_nome_fantasia": "Distribuidora Beta",
      "cpg_serie": 1,
      "cpg_num": 8890,
      "gcc_descr": "Mercadorias para revenda",
      "desconto": 0,
      "frete": 1500,
      "despesas": 0,
      "valor": 128000,
      "data_hora_criacao": "2026-06-30T14:22:05"
    }
  ]
}

Escopo: compras_estoque:read

GET /compras-estoque/{compra_id}

Detalha um registro de compras/estoque pelo ID inteiro. Quando não encontrado, retorna 404 Not Found com o detail do erro.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
compra_idintpathsimID interno do registro.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Registro de compras/estoque recuperado com sucesso",
  "data": {
    "id": 501,
    "cnpj": "12345678000199",
    "cfg_emp": "ACME SERVICOS LTDA",
    "cct_descr": "Fornecedores nacionais",
    "nfe_serie": 1,
    "nfe_num": 45678,
    "nfe_fne_cod": 320,
    "nfe_dt_entrada": "2026-06-30",
    "fne_nome_fantasia": "Distribuidora Beta",
    "cpg_serie": 1,
    "cpg_num": 8890,
    "gcc_descr": "Mercadorias para revenda",
    "desconto": 0,
    "frete": 1500,
    "despesas": 0,
    "valor": 128000,
    "data_hora_criacao": "2026-06-30T14:22:05"
  }
}

Escopo: compras_estoque:read

PUT /compras-estoque/{compra_id}

Atualiza um registro existente. O body é um ComprasEstoqueUpdate com campos parciais - somente o que vier preenchido é alterado. Os campos cnpj e cfg_emp não podem ser alterados (são definidos apenas na criação).

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
compra_idintpathsimID do registro.

Request (ComprasEstoqueUpdate - todos os campos opcionais)

{
  "gcc_descr": "Material de uso e consumo",
  "frete": 2000,
  "valor": 130000
}

Response 200 OK

{
  "success": true,
  "message": "Registro de compras/estoque atualizado com sucesso",
  "data": {
    "id": 501,
    "cnpj": "12345678000199",
    "cfg_emp": "ACME SERVICOS LTDA",
    "cct_descr": "Fornecedores nacionais",
    "nfe_serie": 1,
    "nfe_num": 45678,
    "nfe_fne_cod": 320,
    "nfe_dt_entrada": "2026-06-30",
    "fne_nome_fantasia": "Distribuidora Beta",
    "cpg_serie": 1,
    "cpg_num": 8890,
    "gcc_descr": "Material de uso e consumo",
    "desconto": 0,
    "frete": 2000,
    "despesas": 0,
    "valor": 130000,
    "data_hora_criacao": "2026-06-30T14:22:05"
  }
}

Se o registro não existir, retorna 404 Not Found; outros erros de validação retornam 422 Unprocessable Entity. Escopo: compras_estoque:write

DELETE /compras-estoque/{compra_id}

Remove um registro de compras/estoque pelo ID. Quando o registro não existe, retorna 404 Not Found.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
compra_idintpathsimID do registro.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Registro de compras/estoque removido com sucesso",
  "data": null
}

Escopo: compras_estoque:write

Schemas

ComprasEstoqueCreate

Herda todos os campos de ComprasEstoqueBase. Todos são opcionais.

CampoTipoObrigatórioObservações
cnpjstrnãoCNPJ relacionado. Máx. 30 caracteres.
cfg_empstrnãoEmpresa (configuração). Máx. 300 caracteres.
cct_descrstrnãoDescrição da conta contábil. Máx. 300 caracteres.
nfe_serieintnãoSérie da nota fiscal de entrada.
nfe_numintnãoNúmero da nota fiscal de entrada.
nfe_fne_codintnãoCódigo do fornecedor da NF-e.
nfe_dt_entradastrnãoData de entrada da NF-e. Máx. 30 caracteres.
fne_nome_fantasiastrnãoNome fantasia do fornecedor. Máx. 300 caracteres.
cpg_serieintnãoSérie da conta a pagar.
cpg_numintnãoNúmero da conta a pagar.
gcc_descrstrnãoGrupo de conta contábil. Máx. 300 caracteres.
descontointnãoValor de desconto.
freteintnãoValor de frete.
despesasintnãoOutras despesas.
valorintnãoValor total do registro.

ComprasEstoqueUpdate

Todos os campos são opcionais; apenas os enviados são atualizados. Note que não inclui os campos cnpj nem cfg_emp (esses são definidos apenas na criação).

CampoTipoObservações
cct_descrstrDescrição da conta contábil. Máx. 300 caracteres.
nfe_serieintSérie da nota fiscal de entrada.
nfe_numintNúmero da nota fiscal de entrada.
nfe_fne_codintCódigo do fornecedor da NF-e.
nfe_dt_entradastrData de entrada da NF-e. Máx. 30 caracteres.
fne_nome_fantasiastrNome fantasia do fornecedor. Máx. 300 caracteres.
cpg_serieintSérie da conta a pagar.
cpg_numintNúmero da conta a pagar.
gcc_descrstrGrupo de conta contábil. Máx. 300 caracteres.
descontointValor de desconto.
freteintValor de frete.
despesasintOutras despesas.
valorintValor total do registro.

ComprasEstoqueRead

Estende ComprasEstoqueBase com os campos gerados pelo servidor.

CampoTipoNotas
idintIdentificador do registro.
data_hora_criacaodatetimeData e hora de criação do registro.
cnpjstrCNPJ relacionado.
cfg_empstrEmpresa (configuração).
cct_descrstrDescrição da conta contábil.
nfe_serieintSérie da NF-e.
nfe_numintNúmero da NF-e.
nfe_fne_codintCódigo do fornecedor da NF-e.
nfe_dt_entradastrData de entrada da NF-e.
fne_nome_fantasiastrNome fantasia do fornecedor.
cpg_serieintSérie da conta a pagar.
cpg_numintNúmero da conta a pagar.
gcc_descrstrGrupo de conta contábil.
descontointValor de desconto.
freteintValor de frete.
despesasintOutras despesas.
valorintValor total do registro.

Notas

  • Toda resposta segue o envelope { success, message, data } (ou { success: false, message, details } em erro). Códigos HTTP refletem semântica REST padrão.
  • Os dados de compras/estoque são originados do Klingo ERP e refletem notas fiscais de entrada, fornecedores e contas a pagar.
  • GET /compras-estoque/ sempre retorna 200 OK, mesmo sem resultados - nesse caso data é [] e a mensagem indica que nenhum registro foi encontrado.
  • Os campos de valor (desconto, frete, despesas, valor) são inteiros; confirme com a integração se representam centavos ou unidades monetárias inteiras antes de exibir ao usuário final.
  • O schema ComprasEstoqueUpdate não permite alterar cnpj nem cfg_emp - para corrigir esses campos, recrie o registro.