Pular para o conteúdo

Estoque (inventory)

O recurso inventory expõe os itens de estoque da sua conta: nome, descrição, unidade de medida, saldo atual, alerta de reposição, código EAN e o vínculo com o item do catálogo, quando houver.

Móduloestoque
Escoposinventory:read (também concedido por *:read e por *:write)
Operaçõessomente leitura
MétodoEndpointDescrição
GET/v1/inventoryLista itens de estoque, com paginação por cursor
GET/v1/inventory/{id}Retorna um item de estoque pelo id
CampoTipoDescrição
iduuidIdentificador do item de estoque
namestringNome do item
descriptionstring | nullDescrição livre do item
unitstring | nullUnidade de medida, por exemplo un, kg, L ou cx
current_stocknumber | nullQuantidade atual em estoque
min_stock_alertnumber | nullQuantidade que dispara o alerta de reposição
ean_codestring | nullCódigo de barras EAN do item
catalog_item_iduuid | nullItem do catálogo vinculado, quando houver
is_in_catalogboolean | nullSe o item está publicado no catálogo
is_activeboolean | nullSe o item está ativo
created_atstring (ISO 8601) | nullData de criação
updated_atstring (ISO 8601) | nullData da última atualização

Use fields para receber só um subconjunto das colunas: ?fields=id,name,current_stock,min_stock_alert.

A sintaxe do filtro é filter[campo][operador]=valor. Os campos filtráveis de inventory são:

CampoExemplo
namefilter[name][ilike]=%parafuso%
is_activefilter[is_active][eq]=true
catalog_item_idfilter[catalog_item_id][eq]=6f1e2c3a-9b4d-4e5f-8a7b-1c2d3e4f5a6b

Os operadores aceitos são eq, neq, gt, gte, lt, lte, in, nin, ilike e is_null. Um campo fora da lista acima responde 422 validation, com detail no formato filter_field_not_allowed:<campo>.

A ordenação usa sort=campo para crescente e sort=-campo para decrescente. Os campos ordenáveis são created_at, updated_at e name. O padrão é -created_at.

A listagem também aceita limit (de 1 a 100, padrão 20) e cursor. Veja Paginação, filtros e ordenação.

Itens ativos, do mais recente para o mais antigo:

Terminal window
curl -G "$LIGGA_BASE/v1/inventory" \
-H "Authorization: Bearer $LIGGA_API_KEY" \
--data-urlencode "limit=2" \
--data-urlencode "sort=-created_at" \
--data-urlencode "filter[is_active][eq]=true"
{
"data": [
{
"id": "b3f2a1d4-7c8e-4f5a-9b6c-2d1e0f9a8b7c",
"name": "Cimento CP-II 50kg",
"description": "Saco de cimento para obras em geral",
"unit": "sc",
"current_stock": 42,
"min_stock_alert": 10,
"ean_code": "7891234567895",
"catalog_item_id": "6f1e2c3a-9b4d-4e5f-8a7b-1c2d3e4f5a6b",
"is_in_catalog": true,
"is_active": true,
"created_at": "2026-06-28T14:03:22.481Z",
"updated_at": "2026-07-05T09:41:10.207Z"
},
{
"id": "a1c9e8d7-3b2f-4a6e-8c5d-4f3e2d1c0b9a",
"name": "Luva nitrílica M",
"description": null,
"unit": "par",
"current_stock": 7,
"min_stock_alert": 15,
"ean_code": null,
"catalog_item_id": null,
"is_in_catalog": false,
"is_active": true,
"created_at": "2026-06-12T08:15:44.902Z",
"updated_at": null
}
],
"pagination": {
"next_cursor": "eyJpZCI6ImExYzllOGQ3Li4uIiwidiI6IjIwMjYtMDYtMTJUMDg6MTU6NDQuOTAyWiJ9",
"has_more": true,
"limit": 2
},
"meta": { "request_id": "req_01JZXQ8V2K5M7N9P0R1S2T3U4V" }
}

Enquanto pagination.has_more for true, repita a chamada passando cursor=<pagination.next_cursor>.

A API não tem um filtro pronto para “abaixo do mínimo”: compare current_stock com min_stock_alert no seu lado, ou peça só as duas colunas com fields para reduzir o tráfego.

Terminal window
curl -G "$LIGGA_BASE/v1/inventory" \
-H "Authorization: Bearer $LIGGA_API_KEY" \
--data-urlencode "fields=id,name,current_stock,min_stock_alert" \
--data-urlencode "filter[is_active][eq]=true" \
--data-urlencode "limit=100"
Terminal window
curl "$LIGGA_BASE/v1/inventory/b3f2a1d4-7c8e-4f5a-9b6c-2d1e0f9a8b7c" \
-H "Authorization: Bearer $LIGGA_API_KEY"
{
"data": {
"id": "b3f2a1d4-7c8e-4f5a-9b6c-2d1e0f9a8b7c",
"name": "Cimento CP-II 50kg",
"description": "Saco de cimento para obras em geral",
"unit": "sc",
"current_stock": 42,
"min_stock_alert": 10,
"ean_code": "7891234567895",
"catalog_item_id": "6f1e2c3a-9b4d-4e5f-8a7b-1c2d3e4f5a6b",
"is_in_catalog": true,
"is_active": true,
"created_at": "2026-06-28T14:03:22.481Z",
"updated_at": "2026-07-05T09:41:10.207Z"
},
"meta": { "request_id": "req_01JZXQ8V2K5M7N9P0R1S2T3U4V" }
}
HTTPtypeQuando acontece
401invalid_tokenCabeçalho Authorization ausente ou chave inexistente
403api_disabledA conta ainda não tem a API habilitada
403module_not_enabledMódulo estoque fora do contrato
403insufficient_scopeChave sem inventory:read
404not_foundid inexistente ou pertencente a outra conta
422validationCampo de filtro, operador, sort ou cursor não aceito
429rate-limit-exceededLimite de requisições do plano excedido