Inventory API
API pro správu inventurních sessions a záznamů.
Přehled
Inventory sessions umožňují provádět fyzické počty assetů. Každá session obsahuje:
- Seznam naskenovaných assetů
- Timestamp každého skenu
- Uživatel, který session vytvořil
Endpointy
GET /inventory/sessions
Seznam všech inventurních sessions s paginací.
Oprávnění: Admin
Query parametry:
page(volitelné): Číslo stránky (výchozí: 1)pageSize(volitelné): Počet položek na stránku (výchozí: 50)
Response:
{
"success": true,
"data": {
"sessions": [
{
"id": 1,
"date": 1704067200,
"user_id": 1,
"user_email": "[email protected]",
"user_name": "Admin User",
"notes": "Monthly inventory",
"created_at": 1704067200
}
],
"pagination": {
"total": 10,
"page": 1,
"pageSize": 50,
"totalPages": 1
}
}
}
POST /inventory/sessions
Vytvoří novou inventurní session.
Oprávnění: Admin
Request:
{
"notes": "Monthly inventory check"
}
Response:
{
"success": true,
"data": {
"id": 1,
"date": 1704067200,
"user_id": 1,
"notes": "Monthly inventory check",
"created_at": 1704067200
}
}
GET /inventory/sessions/:id/records
Získá všechny záznamy pro konkrétní inventurní session.
Oprávnění: Admin
Response:
{
"success": true,
"data": {
"session": {
"id": 1,
"date": 1704067200,
"user_id": 1,
"notes": "Monthly inventory",
"created_at": 1704067200
},
"records": [
{
"id": 1,
"session_id": 1,
"asset_id": 5,
"scanned_at": 1704067300,
"scan_id": 12345,
"item_id": 10,
"item_name": "Microphone Shure SM58"
}
]
}
}
POST /inventory/sessions/:id/scan
Naskenuje asset pro inventuru.
Oprávnění: Admin
Request:
{
"scan_id": 12345
}
Response - Nový sken:
{
"success": true,
"data": {
"message": "Asset scanned",
"asset": {
"id": 5,
"scan_id": 12345,
"item_id": 10,
"item_name": "Microphone Shure SM58"
}
}
}
Response - Duplicitní sken:
{
"success": true,
"data": {
"message": "Asset already scanned in this session",
"asset": {
"id": 5,
"scan_id": 12345,
"item_id": 10
}
}
}
POST /inventory/sessions/:id/close
Uzavře inventurní session.
Oprávnění: Admin
Request:
{
"reason": "Inventory completed"
}
Response:
{
"success": true,
"data": {
"message": "Inventory session closed",
"session": {
"id": 1,
"date": 1704067200,
"user_id": 1,
"notes": "Monthly inventory\n[CLOSED 2024-01-01T12:00:00Z] Inventory completed",
"created_at": 1704067200
}
}
}
Error Response (session already closed):
{
"success": false,
"error": "INVALID_STATE",
"message": "Inventory session is already closed"
}
Business pravidla
Uzavření sessiony
- Uzavřené sessions nelze upravovat
- Closure je označeno v
notespoli (formát:[CLOSED <timestamp>] <reason>) - Po uzavření nelze přidávat nové skeny
Duplicitní skeny
- Duplicitní skeny jsou povoleny (asset může být naskenován vícekrát)
- System vrací informaci, že asset už byl naskenován
- Všechny skeny jsou zaznamenány v
inventory_records
Kódy chyb
VALIDATION_ERROR- Neplatné parametry (chybějící scan_id)NOT_FOUND- Session nebo asset nenalezenINVALID_STATE- Session je už uzavřenáINVALID_ID- Neplatné session IDINTERNAL_ERROR- Vnitřní chyba serveru