Přeskočit na hlavní obsah

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": "admin@example.com",
"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 notes poli (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 nenalezen
  • INVALID_STATE - Session je už uzavřená
  • INVALID_ID - Neplatné session ID
  • INTERNAL_ERROR - Vnitřní chyba serveru