Visão Geral
Introdução à API
A Pilar Collector disponibiliza uma interface de programação web, no modelo REST. Por meio dessa interface, é possível conversar com o sistema da Pilar, comandando ações, verificando configurações e realizando a sincronização com os seus sistemas.
O endereço base de comunicação é pilarcollector.com.br, acompanhado sempre do protocolo seguro https:// como prefixo. As versões da API são agrupadas por diretório, sufixadas ao endereço base (https://pilarcollector.com.br/api/).
Endereço para comunicação com a API
Este documento trata da versão da API 1.0.
O endereço para se comunicar através desta versão é:
https://pilarcollector.com.br/api/
Autenticação
A autenticação na Pilar Collector é feita através da utilização de uma chave de API. Esta chave serve para que o sistema identifique a sua conta, e concede permissões para que o sistema se comunique com a pilar em nome da conta em questão.
[POST] https://pilarcollector.com.br/api/v2/obter-token/
Parâmetros:
- usuario (string obrigatório)
- senha (string obrigatório)
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v2/obter-token/' \
--header 'Content-Type: application/json' \
--data-raw '{ \
"usuario":"exemplo", \
"senha":"Teste123@", \
"force":"0" ou "1", \
}'
Exemplo de retorno (JSON):
{
"status": true,
"auth_token": "exemplo::pbkdf2_sha256$24000$HJMs7tozaitE$497y1jWZB515kXt5eGh00pWCULXR7LIPCCNU/W8sk6g=",
}
Resposta em JSON
A fim de facilitar a interoperabilidade entre sistemas, todas as nossas chamadas de API respondem no formato JSON.
Cadastrar Produtos (V3)
Cadastro detalhado de produtos, com suporte a hierarquia (Classe/Subclasse/Família), dimensões, pesos e informações logísticas.
[POST] https://pilarcollector.com.br/api/v3/produtos/
Parâmetros:
- codigo_barras (string obrigatório, max 40)
- descricao (string obrigatório, max 150)
- codigo_interno (string obrigatório, max 40)
- ativo (boolean, padrão true)
- classe (string opcional)
- subclasse (string opcional)
- familia (string opcional)
- preco_venda (float opcional)
- custo_unitario (decimal opcional)
- unidade (string opcional, max 10)
- tipo (string "N" ou "I" opcional)
- cod_fabrica (string opcional)
- embalagem_desc (string opcional, max 50)
- peso_liq (decimal kg opcional)
- peso_bruto (decimal kg opcional)
- peso_embalagem (decimal kg opcional)
- altura (decimal m opcional)
- largura (decimal m opcional)
- comprimento (decimal m opcional)
- cubagem (float m³ opcional)
- shelf_life (integer dias opcional)
- altura_pallet (integer opcional)
- lastro_pallet (integer opcional)
- caixas_pallet (integer opcional)
- cliente_armazenagem (integer ID opcional)
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v3/produtos/' \
--header 'Authorization: Bearer *seu_token*' \
--header 'Content-Type: application/json' \
--data-raw '{
"codigo_barras": "78910101010",
"descricao": "Produto Exemplo V3",
"codigo_interno": "100200",
"classe": "BEBIDAS",
"subclasse": "REFRIGERANTES",
"familia": "COLA",
"preco_venda": 10.50,
"unidade": "UN",
"peso_bruto": 1.250,
"altura": 0.25,
"largura": 0.10,
"comprimento": 0.10,
"tipo": "N"
}'
Exemplo de retorno (JSON):
{
"status": true,
"message": "Produto criado com sucesso",
"data": {
"id": 12345
}
}
Exemplo de erro (JSON):
{
"status": false,
"message": "Verifique os campos obrigatórios.",
"data": null,
"fields": {
"codigo_barras": ["Este campo é obrigatório."]
}
}
Consultar Produtos (V3)
Consulta de produtos cadastrados, permitindo listar com filtros e paginação, ou obter dados detalhados de um produto específico.
1. Listar Produtos
[GET] https://pilarcollector.com.br/api/v3/produtos/
Parâmetros (Query String):
- page (integer opcional, padrão 1)
- limit (integer opcional, padrão 20, máximo 100)
- codigo_interno (string opcional, filtro exato)
- codigo_barras (string opcional, filtro exato)
- cliente_armazenagem (integer ID opcional, filtro exato)
Exemplo de chamada (cURL):
curl --location --request GET 'https://pilarcollector.com.br/api/v3/produtos/?page=1&limit=10&codigo_barras=78910101010' \
--header 'Authorization: Bearer *seu_token*'
Exemplo de retorno (JSON):
{
"status": true,
"data": [
{
"id": 12345,
"codigo_barras": "78910101010",
"descricao": "Produto Exemplo V3",
"codigo_interno": "100200",
"classe": "BEBIDAS",
"subclasse": "REFRIGERANTES",
"familia": "COLA",
"preco_venda": 10.50,
"unidade": "UN",
"ativo": true
// ... outros campos
}
],
"meta": {
"page": 1,
"page_size": 10,
"total_pages": 5,
"total_records": 50
}
}
2. Obter Produto por ID
[GET] https://pilarcollector.com.br/api/v3/produtos/{id}/
Parâmetros (URL Path):
- id (integer obrigatório, ID do produto no sistema Pilar)
Exemplo de chamada (cURL):
curl --location --request GET 'https://pilarcollector.com.br/api/v3/produtos/12345/' \
--header 'Authorization: Bearer '
Exemplo de retorno (JSON):
{
"status": true,
"data": {
"id": 12345,
"codigo_barras": "78910101010",
"descricao": "Produto Exemplo V3",
"codigo_interno": "100200",
"classe": "BEBIDAS",
"subclasse": "REFRIGERANTES",
"familia": "COLA",
"preco_venda": 10.50,
"unidade": "UN",
"ativo": true,
"peso_bruto": 1.250,
"altura": 0.25,
"largura": 0.10,
"comprimento": 0.10,
"tipo": "N"
// ... todos os campos detalhados
}
}
Atualizar Produto (V3)
Atualização de produtos existentes. Utilize PUT para atualização completa ou PATCH para atualização parcial.
[PUT/PATCH] https://pilarcollector.com.br/api/v3/produtos/{id}/
Parâmetros de URL:
- id (integer obrigatório, ID do produto)
Corpo da Requisição (JSON):
Aceita os mesmos campos do método de cadastro (POST).
- PUT: espera o envio de todos os campos obrigatórios.
- PATCH: aceita envio parcial (apenas campos a serem alterados).
Exemplo de chamada PATCH (cURL):
curl --location --request PATCH 'https://pilarcollector.com.br/api/v3/produtos/12345/' \
--header 'Authorization: Bearer *seu_token*' \
--header 'Content-Type: application/json' \
--data-raw '{
"preco_venda": 15.90,
"ativo": false
}'
Exemplo de retorno (JSON):
{
"status": true,
"message": "Produto atualizado com sucesso",
"data": {
"id": 12345
}
}
Cadastrar Documentos (V3)
Registro de novos documentos (Notas Fiscais/Pedidos) no sistema, com geração automática de carga. Permite cadastro automático de destinatários e operações.
[POST] https://pilarcollector.com.br/api/v3/documentos/
Parâmetros (JSON):
- serie_documento (string obrigatório)
- data_emissao (date obrigatório, formato "YYYY-MM-DD" ou "DD/MM/YYYY")
- tipo_documento (string obrigatório, "E" ou "S")
- Identificação (Pelo menos um obrigatório):
- numero_nota (string opcional)
- numero_pedido (string opcional)
- chave_acesso (string opcional)
- Operação e Armazenagem (Obrigatórios):
- cnpj_cliente_armazenagem (string obrigatório)
- descricao_operacao (string obrigatório, cria se não existir)
- Destinatário (Opcional - Cadastra se não existir):
- cnpj_destinatario (string opcional)
- nome_destinatario (string opcional)
- logradouro (string opcional)
- numero (string opcional)
- bairro (string opcional)
- cidade (string opcional)
- uf (string opcional, 2 letras)
- cep (string opcional)
- complemento (string opcional)
- Itens (Obrigatório, min 1):
- codigo_produto (string obrigatório, busca por interno ou barras)
- quantidade (decimal obrigatório)
- valor_unitario (decimal opcional)
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v3/documentos/' \
--header 'Authorization: Bearer *seu_token*' \
--header 'Content-Type: application/json' \
--data-raw '{
"numero_pedido": "PED-001",
"serie_documento": "1",
"data_emissao": "2024-03-30",
"tipo_documento": "S",
"descricao_operacao": "VENDA SAIDA PADRAO",
"cnpj_cliente_armazenagem": "12345678000199",
"cnpj_destinatario": "00000000000000",
"nome_destinatario": "CLIENTE NOVO AUTOMATICO",
"logradouro": "Av Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"cidade": "Sao Paulo",
"uf": "SP",
"cep": "01310-100",
"itens": [
{
"codigo_produto": "PROD001",
"quantidade": 10,
"valor_unitario": 50.00
}
]
}'
Exemplo de retorno (JSON):
{
"status": true,
"message": "Documento registrado com sucesso.",
"data": {
"id": 9988,
"carga_id": 1234,
"numero_carga": "100"
}
}
Consultar Documentos (V3)
Consulta de documentos registrados, permitindo listar com filtros de nota, pedido, chave ou tipo, e paginação.
1. Listar Documentos
[GET] https://pilarcollector.com.br/api/v3/documentos/
Parâmetros (Query String):
- page (integer opcional, padrão 1)
- limit (integer opcional, padrão 20, máximo 100)
- nota_id (integer opcional, filtro exato por ID interno)
- numero_nota (string opcional, filtro exato)
- numero_pedido (string opcional, filtro exato)
- chave_acesso (string opcional, filtro exato)
- tipo_documento (string opcional, "E" ou "S")
Exemplo de chamada (cURL):
curl --location --request GET 'https://pilarcollector.com.br/api/v3/documentos/?page=1&limit=10&tipo_documento=S' \
--header 'Authorization: Bearer *seu_token*'
Exemplo de retorno (JSON):
{
"status": true,
"data": [
{
"id": 9988,
"numero_nota": "123",
"numero_pedido": "PED-001",
"serie_nota": "1",
"data": "2024-03-30",
"chave_acesso": "352403...",
"tipo_documento": "S",
"status_id": "3",
"status_descricao": "BLOQUEADO",
"cnpj_destinatario": "00000000000000",
"nome_destinatario": "CLIENTE TESTE",
"descricao_operacao": "VENDA SAIDA PADRAO",
"itens": [
{
"id": 101,
"codigo_produto": "PROD001",
"produto_descricao": "Produto Exemplo",
"quantidade": 10.000,
"unidade": "UN",
"valor_unitario": 50.000,
"valor_total": 500.000,
"quantidade_contagem": 0.000,
"inconsistencia": false,
"corte_qtd": 0.000
}
]
}
],
"meta": {
"page": 1,
"page_size": 10,
"total_pages": 1,
"total_records": 1
}
}
2. Obter Documento por ID
[GET] https://pilarcollector.com.br/api/v3/documentos/{id}/
Parâmetros (URL Path):
- id (integer obrigatório, ID do documento no sistema Pilar)
Exemplo de chamada (cURL):
curl --location --request GET 'https://pilarcollector.com.br/api/v3/documentos/9988/' \
--header 'Authorization: Bearer '
Exemplo de retorno (JSON):
{
"status": true,
"data": {
"id": 9988,
"numero_nota": "123",
"numero_pedido": "PED-001",
"serie_nota": "1",
"data": "2024-03-30",
"chave_acesso": "352403...",
"tipo_documento": "S",
"status_id": "3",
"status_descricao": "BLOQUEADO",
"cnpj_destinatario": "00000000000000",
"nome_destinatario": "CLIENTE TESTE",
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"cidade": "Sao Paulo",
"uf": "SP",
"descricao_operacao": "VENDA SAIDA PADRAO",
"cnpj_cliente_armazenagem": "12345678000199",
"itens": [
{
"id": 101,
"codigo_produto": "PROD001",
"produto_descricao": "Produto Exemplo",
"quantidade": 10.000,
"unidade": "UN",
"valor_unitario": 50.000,
"valor_total": 500.000,
"quantidade_contagem": 0.000,
"validade": null,
"lote": null,
"inconsistencia": false,
"corte_qtd": 0.000,
"corte_motivo": null
}
]
}
}
Atualizar Documento (V3)
Atualização de documentos existentes. Utilize PUT para atualização completa ou PATCH para atualização parcial.
[PUT/PATCH] https://pilarcollector.com.br/api/v3/documentos/{id}/
Parâmetros de URL:
- id (integer obrigatório, ID do documento)
Corpo da Requisição (JSON):
Aceita os mesmos campos do método de cadastro (POST).
- PUT: espera o envio de todos os campos obrigatórios.
- PATCH: aceita envio parcial (apenas campos a serem alterados).
Campos que podem ser atualizados:
- numero_nota, numero_pedido
- serie_documento, data_emissao, chave_acesso
- Dados do destinatário (cnpj, nome, endereço completo)
- descricao_operacao (cria automaticamente se não existir)
- cnpj_cliente_armazenagem
- itens (substitui todos os itens existentes)
Exemplo de chamada PATCH (cURL):
curl --location --request PATCH 'https://pilarcollector.com.br/api/v3/documentos/9988/' \
--header 'Authorization: Bearer *seu_token*' \
--header 'Content-Type: application/json' \
--data-raw '{
"numero_nota": "123456",
"nome_destinatario": "CLIENTE ATUALIZADO",
"logradouro": "Rua Nova",
"numero": "500"
}'
Exemplo de chamada PUT (cURL):
curl --location --request PUT 'https://pilarcollector.com.br/api/v3/documentos/9988/' \
--header 'Authorization: Bearer *seu_token*' \
--header 'Content-Type: application/json' \
--data-raw '{
"numero_pedido": "PED-002",
"serie_documento": "1",
"data_emissao": "2024-04-01",
"tipo_documento": "S",
"descricao_operacao": "VENDA SAIDA ATUALIZADA",
"cnpj_cliente_armazenagem": "12345678000199",
"cnpj_destinatario": "11111111111111",
"nome_destinatario": "NOVO CLIENTE",
"logradouro": "Av Brasil",
"numero": "2000",
"bairro": "Centro",
"cidade": "Rio de Janeiro",
"uf": "RJ",
"cep": "20000-000",
"itens": [
{
"codigo_produto": "PROD002",
"quantidade": 20,
"valor_unitario": 75.00
}
]
}'
Exemplo de retorno (JSON):
{
"status": true,
"message": "Documento atualizado com sucesso",
"data": {
"id": 9988
}
}
Exemplo de erro (JSON):
{
"status": false,
"message": "Documento não encontrado.",
"data": null
}
Atualizar Estoque - Inventário
Importação (automática) de estoque do sistema do cliente via API.
[POST] https://pilarcollector.com.br/api/v2/atualizar-estoque/
Parâmetros:
- auth_token (string obrigatório)
- opcao_duplicados (string[1] obrigatório)
- [1]: Ignorar os itens duplicados
- [2]: Somar quantidade dos itens duplicados
- [3]: Substituir os itens duplicados
- opcao_erros (string[1] obrigatório)
- [1]: Ignorar os registros com erro e importar os outros
- [2]: Não importar nenhum item
- estoque (array of objects estoque_item obrigatório)
- estoque_item:
- codigo (integer obrigatório)
- codigo_barras (string obrigatório, máximo 20 caracteres)
- estoque_sistema (decimal obrigatório, exemplo: 896,037)
- produto_custo_unitario (decimal obrigatório, exemplo: 4,99)
- estoque_item:
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v2/atualizar-estoque/' \
--header 'Content-Type: application/json' \
--data-raw '{
"auth_token": "exemplo::pbkdf2_sha256$24000$HJMs7tozaitE$497y1jWZB515kXt5eGh00pWCULXR7LIPCCNU/W8sk6g=",
"opcao_duplicados": "1",
"opcao_erros": "1",
"estoque": [
{
"codigo": "42073",
"codigo_barras": "7898125081607",
"estoque_sistema": "896,037",
"produto_custo_unitario": "4,99",
},
{
"codigo": "32866",
"codigo_barras": "7898937237049",
"estoque_sistema": "26",
"produto_custo_unitario": "5,99",
}
]
}'
Exemplo de retorno (JSON):
{
"status": true,
"message": "Estoque importado com sucesso."
}
Obter Operações
Obtem as operações cadastradas, via API.
[POST] https://pilarcollector.com.br/api/v2/obter-operacoes/
Parâmetros:
- auth_token (string obrigatório)
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v2/obter-operacoes/' \
--header 'Content-Type: application/json' \
--data-raw '{
"auth_token": "exemplo::pbkdf2_sha256$24000$HJMs7tozaitE$497y1jWZB515kXt5eGh00pWCULXR7LIPCCNU/W8sk6g=",
}'
Exemplo de retorno (JSON):
{
"status": true,
"operacoes": [
{
"id": 4,
"descricao": "Entrada",
"tipo": "E",
"status": "A",
"permitir_importar_repetido": false
}
]
}
O campo "tipo" pode ser:
- "E" - Entrada
- "S" - Saída
O campo "status" pode ser:
- "A" - Ativo
- "I" - Inativo
O campo "permitir_importar_repetido" pode ser:
- "true" - permite importar nota com "chave_acesso_nfe" repetido
- "false" - não permite importar nota com "chave_acesso_nfe" repetido
Retorno das coletas do inventário aberto
Retorna os dados das coletas do inventário aberto, via API.
[POST] https://pilarcollector.com.br/api/v2/retorno-das-coletas-do-inventario-aberto/
Parâmetros:
- auth_token (string obrigatório)
- Local
- id (integer não obrigatório)
- Seção
- id (integer não obrigatório)
- Gôndola
- id (integer não obrigatório)
- Inventário
- id (integer obrigatório)
Exemplo de chamada (cURL):
curl --location --request POST 'https://pilarcollector.com.br/api/v2/retorno-das-coletas-do-inventario-aberto/' \
--header 'Content-Type: application/json' \
--data-raw '{
"auth_token": "exemplo::pbkdf2_sha256$24000$HJMs7tozaitE$497y1jWZB515kXt5eGh00pWCULXR7LIPCCNU/W8sk6g=",
"local": {
"id": 12
},
"secao": {
"id": 23
},
"gondola": {
"id": 34
},
"inventario": {
"id": 45
}
}'
Exemplo de retorno (JSON):
{
"status": true,
"inventario": {
"id": 2490,
"codigo": 114,
"codigo_auxiliar": "",
"quantidade_contado": "1256.00",
"quantidade_sistema": "0.00",
"fechado": true,
"inicio": "11/04/2022",
"fim": "11/04/2022",
"tempo": "654"
},
"itens": [
{
"quantidade": "4.000",
"codigo_barras": "7898537113781",
"codigo_interno": "1101001023",
"descricao": "CAPA DE BANCO SUZUKI AE 50",
"custo_unitario": "0.00"
}
]
}