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)

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"
        }
    ]
}