{
"_links": {
"group_detail": "/api/inventory/product-groups/by-id/7",
"inventory_health": "/api/inventory/health?group_by=group",
"products_analytics": "/api/products/analytics?from=2026-07-09&to=2026-10-07&group_by=group",
"self": "/api/product-groups/7/overview?lookback_months=3&top_products_limit=10"
},
"cache": {
"age_seconds": 0,
"cached_at": "2026-10-07T09:12:00-04:00",
"components": {
"sales": {
"age_seconds": 0,
"cached_at": "2026-10-07T09:12:00-04:00",
"expires_at": "2026-10-07T13:12:00-04:00",
"force_refreshed": false,
"key_hash": "sha1:adc03544ca535925f23ccee856a307dc27a22f0d",
"status": "miss",
"ttl_policy": "current_period_4h",
"ttl_remaining_seconds": 14400
},
"stock": {
"age_seconds": 990,
"cached_at": "2026-10-07T08:55:30-04:00",
"expires_at": "2026-10-07T09:55:30-04:00",
"force_refreshed": false,
"key_hash": "sha1:333e68e8dd024acefde6deb550e0b59608311c82",
"status": "hit",
"ttl_policy": "stock_1h",
"ttl_remaining_seconds": 2610
}
},
"expires_at": "2026-10-07T13:12:00-04:00",
"force_refreshed": false,
"key_hash": "sha1:adc03544ca535925f23ccee856a307dc27a22f0d",
"status": "partial_hit",
"ttl_policy": "current_period_4h",
"ttl_remaining_seconds": 14400
},
"group": {
"code": "7",
"id": 7,
"name": "Quincaillerie"
},
"identity": {
"code": "7",
"id": 7,
"name": "Quincaillerie",
"products_count": 38
},
"metadata": {
"extracted_at": "2026-10-07T09:12:00-04:00",
"group_products_distinct_sold": 27,
"organisation_id": "entreprise_exemple",
"scope": "product_group_360_shared_stock_plus_window_scan",
"scope_note": "Fiche du groupe lue en direct ; stock partagé avec la santé du stock ; ventes de la fenêtre conservées en cache par groupe.",
"sdk_indexes_used": {
"invoicing": 6,
"invoicing_line": 6,
"product": 1,
"product_group": 1
},
"window_invoices_count": 1240
},
"sales": {
"monthly_trend": [
{
"lines_count": 104,
"margin": 5250.1,
"month": "2026-07",
"qty": 960,
"revenue": 12100
},
{
"lines_count": 131,
"margin": 6650.15,
"month": "2026-08",
"qty": 1220,
"revenue": 15320.4
},
{
"lines_count": 139,
"margin": 7150,
"month": "2026-09",
"qty": 1310,
"revenue": 16480
},
{
"lines_count": 38,
"margin": 1890,
"month": "2026-10",
"qty": 350,
"revenue": 4350
}
],
"qty_per_day": 42.1978,
"totals": {
"cost": 27310.15,
"invoices_count": 186,
"lines_count": 412,
"margin": 20940.25,
"margin_pct": 43.4,
"qty": 3840,
"revenue": 48250.4
}
},
"stock": {
"products_count": 38,
"qty_available": 4875,
"qty_on_hand": 5120,
"stock_value": 18450.75
},
"top_products": [
{
"_links": {
"product_overview": "/api/products/412/overview"
},
"last_sale_date": "2026-10-02",
"lines_count": 23,
"margin": 2893.7,
"margin_pct": 51.81,
"product": {
"code": "VIS-B8-100",
"id": 412,
"name": "Vis à bois n° 8 — boîte de 100"
},
"qty": 430,
"revenue": 5585.7,
"share_pct": 11.58
},
{
"_links": {
"product_overview": "/api/products/415/overview"
},
"last_sale_date": "2026-09-29",
"lines_count": 31,
"margin": 1730.4,
"margin_pct": 42,
"product": {
"code": "BOUL-HEX-38",
"id": 415,
"name": "Boulon hexagonal 3/8 po — sac de 25"
},
"qty": 206,
"revenue": 4120,
"share_pct": 8.54
}
],
"window": {
"days": 91,
"from": "2026-07-09",
"lookback_months": 3,
"to": "2026-10-07"
}
}