Produtos e clientes do PDV
Baixa, de forma paginada, os produtos e os clientes da loja para a base local do terminal de balcão.
O terminal precisa funcionar mesmo com a internet lenta, então ele guarda uma cópia dos produtos e dos clientes e consulta essa cópia no balcão. Estas duas rotas alimentam a cópia: pos_products devolve os produtos com preço, código de barras e estoque, e pos_customers devolve os clientes com nome, e-mail e telefone. As duas são só de leitura, paginadas e exigem um usuário administrador.
/api/v1.0/pos_productsAdminVenddor 1.0: produtos para o terminal (ids UUID)
Lista os produtos da loja. pos_barcode é igual ao SKU (product_code): o código de barras é o próprio SKU do produto.
Parâmetros de consulta
pageintegerpadrão: 1items_per_pageintegerpadrão: 10searchstring/api/pos_productsAdminProdutos para o terminal, forma sem versão (ids decimais)
Igual a GET /api/v1.0/pos_products, com product_id em número decimal (string).
Parâmetros de consulta
pageintegerpadrão: 1items_per_pageintegerpadrão: 10searchstring/api/v1.0/pos_customersAdminVenddor 1.0: clientes para o terminal (ids UUID)
Lista os usuários do tipo cliente (compradores), do cadastro mais novo para o mais antigo. Administradores e sellers não entram.
Parâmetros de consulta
pageintegerpadrão: 1items_per_pageintegerpadrão: 10searchstring/api/pos_customersAdminClientes para o terminal, forma sem versão (ids decimais)
Igual a GET /api/v1.0/pos_customers, com user_id em número decimal (string).
Parâmetros de consulta
pageintegerpadrão: 1items_per_pageintegerpadrão: 10searchstringExemplo de requisição
curl "$BASE_URL/api/v1.0/pos_products?page=1&items_per_page=50" \
-u "$ADMIN_EMAIL:$API_KEY"
curl "$BASE_URL/api/v1.0/pos_customers?search=maria" \
-u "$ADMIN_EMAIL:$API_KEY"Resposta
{
"status": 200,
"data": {
"success": true,
"message": "",
"products": [
{
"product_id": "d8a6c5e7-8e44-4055-a0e2-49014f5d17f6",
"product": "Notebook Vintage Vermelho 04018",
"price": "1678.95",
"product_code": "SD-004018-C",
"pos_barcode": "SD-004018-C",
"image_path": "/uploads/minhaloja/notebook-vermelho.png",
"amount": "77",
"options": []
}
],
"search": { "page": 1, "items_per_page": 10, "total_items": 4985 }
}
}{
"status": 200,
"data": {
"success": true,
"message": "",
"customers": [
{
"user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"email": "maria.souza@example.com",
"firstname": "Maria",
"lastname": "Souza",
"phone": "+5511999990000"
}
],
"search": { "page": 1, "items_per_page": 20, "total_items": 1 }
}
}Campos da resposta
data.products[].product_idstring/api). É o product_id do fechamento.data.products[].productstringdata.products[].pricestring"1678.95"). É o preço de catálogo; promoções por cliente não entram.data.products[].product_codestringdata.products[].pos_barcodestringdata.products[].image_pathstringdata.products[].amountstring"77"). Pode ter casas decimais em produtos vendidos por peso.data.products[].optionsarraydata.customers[].user_idstring/api).data.customers[].emailstringdata.customers[].firstnamestringdata.customers[].lastnamestringdata.customers[].phonestringdata.searchobjectpage, items_per_page (o valor efetivamente usado) e total_items (total que atende à busca, em todas as páginas).Erros
| Status | Quando | Corpo |
|---|---|---|
| 200 | Falha ao consultar a base (success: false) | {"status":200,"data":{"success":false,"message":"..."}} |
| 401 | Sem credenciais, chave inválida ou token expirado | {"message":"Invalid credentials","status":401} |
| 403 | Usuário que não é administrador | {"message":"Forbidden: admin scope required","status":403} |