Produtos
Listar
GET /api/v1/products
Filtros
Os parâmetros abaixo podem ser passados como uma query string. Mais de um filtro pode ser passado na mesma consulta. Datas devem ser passadas no formato ISO 8601.
Este serviço suporta paginação.
include_deleted: indica se deseja incluir no retorno os produtos excluídos. (true/false) * Se não for informado, será considerado false como padrão.
barcode: código de barras do produto.
Também serão incluídos os produtos que possuem o código de barras informado como código adicional.
start_updated: filtra produtos atualizados a partir da data informada.
end_updated: filtra produtos atualizados até a data informada.
Retorno
status |
descrição |
|---|---|
200 |
OK |
Campos que serão retornados apenas se o operador controlar estoque
nome |
descrição |
|---|---|
alternatives |
array com os produtos alternativos do produto principal |
Exemplo:
[
{
"id": 163,
"created_at": "2014-10-17T14:50:15.000-03:00",
"updated_at": "2014-10-17T14:50:15.000-03:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 23,
"name": "Ruffles 50 g",
"upc_code": "91",
"barcode": "1234567890",
"external_id": null,
"weight": null,
"vendible_balance": -6.0,
"tags": ["tag1", "tag2"],
"cost_price": 1.85,
"supply_category_id": 1,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"current_cost_price": {
"cost_price": 1.85,
"quantity": 120
},
"additional_barcodes": [],
"alternatives": [
{ "id": 1, "name": "Fandangos" "percentage": 100 },
{ "id": 2, "name": "Cebolitos" "percentage": 100 }
],
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"url": "http://localhost:4000/api/v1/products/163",
"inventories": [
{
"distribution_center_id": 1,
"total_quantity": -16.0,
"committed_quantity": 0.0
}
]
},
{
"id": 164,
"created_at": "2014-10-17T14:50:50.000-03:00",
"updated_at": "2014-10-17T14:50:50.000-03:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 23,
"name": "Doritos 55 g",
"upc_code": "110",
"barcode": "0987654321",
"external_id": null,
"weight": null,
"vendible_balance": -6.0,
"tags": ["tag2", "tag3"],
"cost_price": null,
"supply_category_id": 1,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"additional_barcodes": [
{ "id": 123, "value": "10191817" },
{ "id": 321, "value": "16151413" }
],
"url": "http://localhost:4000/api/v1/products/164",
"inventories": []
},
{
"id": 165,
"created_at": "2014-10-17T14:51:30.000-03:00",
"updated_at": "2014-10-17T14:51:30.000-03:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 23,
"name": "Torcida Queijo 50 g",
"upc_code": "93",
"barcode": null,
"external_id": null,
"weight": null,
"vendible_balance": -6.0,
"tags": ["tag1", "tag3"],
"deleted_at": "2014-12-17T14:51:30.000-03:00",
"cost_price": null,
"supply_category_id": 2,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"additional_barcodes": [],
"packing": {
"id":15,
"name": "Caixa com 10 unidades",
"quantity":10
},
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"url": "http://localhost:4000/api/v1/products/165",
"inventories": []
}
]
Ver
GET /api/v1/products/[id]
Parâmetros de URL:
parâmetro |
descrição |
obrigatório |
|---|---|---|
id |
id do produto |
sim |
Retorno
status |
descrição |
|---|---|
200 |
OK |
Campos que serão retornados apenas se o operador controlar estoque
nome |
descrição |
|---|---|
alternatives |
array com os produtos alternativos do produto principal |
Exemplo:
{
"id": 163,
"created_at": "2014-10-17T14:50:15.000-03:00",
"updated_at": "2014-10-17T14:50:15.000-03:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 23,
"name": "Ruffles 50 g",
"upc_code": "91",
"barcode": "1234567890",
"external_id": null,
"weight": null,
"vendible_balance": -6.0,
"tags": ["tag1", "tag2"],
"cost_price": 1.23,
"supply_category_id": 2,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"additional_barcodes": [],
"current_cost_price": {
"cost_price": 1.23,
"quantity": 120
},
"alternatives": [
{ "id": 1, "name": "Fandangos" "percentage": 100 },
{ "id": 2, "name": "Cebolitos" "percentage": 100 }
],
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"url": "http://localhost:4000/api/v1/products/163",
"inventories": []
}
Erros
status |
descrição |
response body |
|---|---|---|
404 |
produto não encontrado |
{ “status”: “404”, “error”: “Not Found” } |
Criar
POST /api/v1/products
Campos que serão retornados apenas se o operador controlar estoque
nome |
descrição |
|---|---|
alternatives |
array com os produtos alternativos do produto principal |
Request:
{
"product": {
"type": "Product",
"name": "Schweppes Citrus",
"manufacturer_id": 56,
"category_id": 21,
"upc_code": 111,
"barcode": "1234567891",
"external_id": "123qwe",
"weight": 123,
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation_id": 78,
"cost_price": 1.23,
"tags": ["tag1", "tag2"],
"supply_category_id": 1,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"additional_barcodes_attributes": [
{ "value": "10191817" },
{ "value": "16151413" }
],
"alternatives": [
{ "id": 1, "alternative_id": 2, "percentage": 100 },
{ "id": 1, "alternative_id": 3, "percentage": 100 }
],
"good_packing_attributes": {
"packing_id": 15
}
}
}
Campos
Obrigatórios
product
name: nome do produto.
manufacturer_id: id do fabricante.
category_id: id da categoria.
supply_category_id: id da categoria de reabastecimento (Caso utilize mais de uma categoria de abastecimento, esse campo é obrigatório)
Opcionais
product
upc_code: código do produto.
barcode: código de barras do produto, a ser utilizado no micro market.
external_id: identificador externo do produto.
weight: peso do produto (em gramas)
cost_price: preço de custo
tags: array com tags.
additional_barcodes_attributes: Array com códigos de barras adicionais.
value: o código de barras.
alternatives: Array com dados dos produtos alternativos.
id: id do produto principal.
alternative_id: id do produto alternativo.
percentage: percentual de reabastecimento do produto alternativo na pick list.
good_packing_attributes: Array com atributos do packing associado.
packing_id: Id do packing associado ao insumo. É necessário que o packing tenha “default”(Unidade) como unidade de medida, caso contrário ele é ignorado.
ncm_code: código ncm do produto.
cest_code: código cest do produto.
tax_operation_id: id da operação fiscal.
Retorno
Retorno
status |
descrição |
|---|---|
201 |
Criado com sucesso |
Exemplo:
{
"id": 2830,
"created_at": "2016-02-16T10:20:11.018-02:00",
"updated_at": "2016-02-16T10:20:11.018-02:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 21,
"name": "Schweppes Citrus",
"upc_code": "111",
"barcode": "1234567891",
"external_id": "123qwe",
"weight": 123,
"tags": ["tag1", "tag2"],
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"cost_price": 1.23,
"supply_category_id": 1,
"additional_barcodes": [
{ "id": 123, "value": "10191817" },
{ "id": 321, "value": "16151413" }
],
"alternatives": [
{ "id": 2830, "alternative_id": 2, "name": "Fandangos", "percentage": 100 },
{ "id": 2830, "alternative_id": 3, "name": "Cebolitos", "percentage": 100 }
]
"packing": {
"id":15,
"name": "Caixa com 10 unidades",
"quantity":10
},
"url": "http://localhost:4000/api/v1/products/2830"
}
Erros
status |
descrição |
response body |
|---|---|---|
400 |
parâmetros faltando |
{ “status”: “400”, “error”: “Bad Request” } |
401 |
não autorizado |
(vazio) |
422 |
erro ao criar |
ver exemplo abaixo |
422 - erro ao criar
{
"name": [
"já está em uso"
]
}
Atualizar
PATCH /api/v1/products/[id]
Parâmetros de URL:
parâmetro |
descrição |
obrigatório |
|---|---|---|
id |
id do produto |
sim |
Request:
{
"product": {
"name": "Schweppes Guaraná"
}
}
Campos
Ao menos um campo interno a product deve ser passado.
Caso se deseje remover um additional_barcode, deve-se adicionar o atributo _destroy com valor true à chamada como no exemplo abaixo:
{
"product": {
"name": "Schweppes Guaraná",
"tags": ["tag1", "tag2"],
"additional_barcodes_attributes": [
{
"id": 123,
"_destroy": true
}
]
}
}
O mesmo vale para o packing:
{
"product": {
"name": "Schweppes Guaraná",
"tags": ["tag1", "tag2"],
"good_packing_attributes": {
"id": 15,
"_destroy": true
}
}
}
O mesmo vale para o alternatives:
{
"product": {
"name": "Ruffles",
"tags": ["tag1", "tag2"],
"alternatives": [
{ "alternative_id": 2, "_destroy": true }
]
}
}
Retorno
status |
descrição |
|---|---|
200 |
Atualizado com sucesso |
Exemplo:
{
"id": 2830,
"created_at": "2016-02-16T10:20:11.000-02:00",
"updated_at": "2016-02-16T10:27:07.000-02:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 21,
"name": "Schweppes Guaraná",
"upc_code": "111",
"barcode": "1234567891",
"external_id": null,
"weight": null,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"tags": ["tag1", "tag2"],
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"cost_price": 1.23,
"supply_category_id": 1,
"additional_barcodes": [
{ "id": 123, "value": "10191817" },
{ "id": 321, "value": "16151413" }
],
"packing": {
"id":15,
"name": "Caixa com 10 unidades",
"quantity":10
},
"url": "http://localhost:4000/api/v1/products/2830"
}
Erros
status |
descrição |
response body |
|---|---|---|
400 |
parâmetros faltando |
{ “status”: “400”, “error”: “Bad Request” } |
401 |
não autorizado |
(vazio) |
404 |
produto não encontrado |
{ “status”: “404”, “error”: “Not Found” } |
422 |
erro ao atualizar |
ver exemplo abaixo |
422 - erro ao atualizar
{
"name": [
"não pode ficar em branco"
]
}
Excluir
DELETE /api/v1/products/[id]
Parâmetros de URL:
parâmetro |
descrição |
obrigatório |
|---|---|---|
id |
id do produto |
sim |
Retorno
status |
descrição |
response body |
|---|---|---|
204 |
Excluído com sucesso |
(vazio) |
Erros
status |
descrição |
response body |
|---|---|---|
404 |
produto não encontrado |
{ “status”: “404”, “error”: “Not Found” } |
Reativar
PATCH /api/v1/products/[id]/reactivate
Parâmetros de URL:
parâmetro |
descrição |
obrigatório |
|---|---|---|
id |
id do produto |
sim |
Retorno
status |
descrição |
|---|---|
200 |
Reativado com sucesso |
Exemplo:
{
"id": 163,
"created_at": "2014-10-17T14:50:15.000-03:00",
"updated_at": "2014-10-17T14:50:15.000-03:00",
"type": "Product",
"manufacturer_id": 56,
"category_id": 23,
"name": "Ruffles 50 g",
"upc_code": "91",
"barcode": "1234567890",
"external_id": null,
"weight": null,
"vendible_balance": -6.0,
"tags": ["tag1", "tag2"],
"cost_price": 1.23,
"supply_category_id": 2,
"ignore_distribution_center": false,
"ignore_automatic_picklist": false,
"additional_barcodes": [],
"ncm_code": "21069090",
"cest_code": "1234567",
"tax_operation": {
"id": 78,
"name": "CFOP: 5102; CSOSN: 102"
},
"url": "http://localhost:4000/api/v1/products/163",
"inventories": []
}
Erros
status |
descrição |
response body |
|---|---|---|
404 |
produto não encontrado |
{ “status”: “404”, “error”: “Not Found” } |
422 |
erro ao criar |
ver exemplo abaixo |
{
"barcode": [
"já está em uso"
]
}
API obsoleta
A API abaixo tornou-se obsoleta em favor de uma API mais simples, documentada acima. A API abaixo ainda funciona, mas o seu uso é desencorajado.
Listar (obsoleto)
GET /api/v1/vendibles
Ver (obsoleto)
GET /api/v1/vendibles/[id]
Criar (obsoleto)
POST /api/v1/vendibles
Request:
{
"vendible": {
"type": "Product",
"name": "Vanilla Coke",
"manufacturer_id": 56,
"category_id": 21,
"upc_code": 111
}
}
Campos
Obrigatórios
vendible
name: nome do produto.
type: valor deve ser sempre Product.
manufacturer_id: id do fabricante.
category_id: id da categoria.
Opcionais
vendible
upc_code: código do produto.
good_packing_attributes: Array com atributos do packing associado
packing_id: Id do packing associado ao insumo. É necessário que o packing tenha “default”(Unidade) como unidade de medida, caso contrário ele é ignorado.
Atualizar (obsoleto)
PATCH /api/v1/vendibles/[id]
Request:
{
"vendible": {
"name": "New Vanilla Coke",
"manufacturer_id": 521
}
}
Campos
Ao menos um campo interno a vendible deve ser passado.
O parâmetro type é ignorado.
Excluir (obsoleto)
DELETE /api/v1/vendibles/[id]