Envie um POST https://api.e-com.plus/v1/$aggregate.json com autenticação
e corpo como o exemplo abaixo:
{
"resource": "orders",
"pipeline": [
{
"$match": {
"created_at": { "$gte": "2022-12-16T19:59:43.659Z" },
"transactions.status.current": { "$in": ["pending", "under_analysis"] }
}
},
{ "$unwind": "$items" },
{
"$project": {
"product_id": "$items.product_id",
"sku": "$items.sku",
"stock_status": "$items.stock_status",
"quantity": "$items.quantity"
}
},
{ "$match": { "stock_status": "released" } },
{
"$group": {
"_id": "$sku",
"reserved_stock": { "$sum": "$quantity" },
"sku": { "$first": "$sku" },
"product_id": { "$first": "$product_id" }
}
},
{ "$project" : { "_id": 0 } }
]
}Alterando a data mínima ("2022-12-16T19:59:43.659Z" no exemplo) para 1 mês atrás
(ou um pouco mais, dependendo da operação da loja) e possivelmente o(s) status a ser ignorado,
neste exemplo apenas pedidos pendente ("pending") ou em análise ("under_analysis") serão considerados na agregação.
Neste exemplo todos SKUs com "estoque reservado" serão retornados em uma resposta como:
{
"result": [
{
"reserved_stock": 1,
"sku": "cx-ed-1052",
"product_id": "5c70168cc626be23430d4fd9"
},
{
"reserved_stock": 1,
"sku": "cd-acl-9965-777-8",
"product_id": "5c702e1cc626be23430d500e"
},
{
"reserved_stock": 1,
"sku": "cd-acl-9965-509-5",
"product_id": "5c702e1cc626be23430d500e"
},
{
"reserved_stock": 1,
"sku": "hd-csr-303",
"product_id": "5c701c8ac626be23430d4fe5"
},
{
"reserved_stock": 1,
"sku": "cd-acl-9965-304-4",
"product_id": "5c702e1cc626be23430d500e"
},
{
"reserved_stock": 5,
"sku": "ms-csr-303",
"product_id": "5c7010a3c626be23430d4fb4"
},
{
"reserved_stock": 2,
"sku": "HBT6818",
"product_id": "5c769d1fc626be23430d50a0"
}
]
}Se preferir, você pode filtrar a agregação com uma lista de SKUs ("items.sku") editando o primeiro passo do pipeline na request:
{
"$match": {
"created_at": { "$gte": "2022-12-16T19:59:43.659Z" },
"transactions.status.current": { "$in": ["pending", "under_analysis"] },
"items.sku": { "$in": ["123", "456", "789", "abc"] }
}
}