Kits API
API pro správu globálních a akcových kitů.
Přehled
Systém podporuje dva typy kitů:
-
Global Kits - Firemní kity, které mohou být použity na více akcích
- Může obsahovat kombinaci konkrétních assetů a nekonkrétních itemů
- Může být naložen hromadně (pokud je kompletní)
- Pouze Admin může spravovat
-
Project Kits - Akcové kity, které jsou specifické pro konkrétní projekt
- Může obsahovat kombinaci assetů a itemů
- Může obsahovat informaci odkud to přišlo (
source_type,source_id) - NIKDY nelze naložit hromadně - vždy položkové potvrzení
- Producer a Admin mohou spravovat
Globální kity
GET /kits/global
Získá seznam všech globálních kitů.
Oprávnění: Bearer token (vyžaduje autentizaci)
Response:
{
"success": true,
"data": [
{
"id": 1,
"name": "ADJ spoty #1",
"scan_id": 12345,
"notes": "Kompletní sada ADJ spotů",
"created_at": 1704067200
}
]
}
GET /kits/global/:id
Získá detail globálního kitu včetně členů.
Oprávnění: Bearer token (vyžaduje autentizaci)
Response:
{
"success": true,
"data": {
"id": 1,
"name": "ADJ spoty #1",
"scan_id": 12345,
"notes": "Kompletní sada ADJ spotů",
"created_at": 1704067200,
"assets": [
{
"id": 1,
"scan_id": 11111,
"item_id": 5,
"functional_status": "OK_100",
"availability_status": "AVAILABLE"
}
],
"items": [
{
"id": 10,
"name": "XLR kabel",
"qty": 5
}
]
}
}
POST /kits/global
Vytvoří nový globální kit.
Oprávnění: Admin
Request:
{
"name": "ADJ spoty #1",
"scan_id": 12345,
"notes": "Kompletní sada ADJ spotů"
}
Response:
{
"success": true,
"data": {
"id": 1,
"name": "ADJ spoty #1",
"scan_id": 12345,
"notes": "Kompletní sada ADJ spotů",
"created_at": 1704067200
}
}
PUT /kits/global/:id
Upraví globální kit.
Oprávnění: Admin
Request:
{
"name": "ADJ spoty #1 (aktualizováno)",
"scan_id": 12345,
"notes": "Aktualizované poznámky"
}
Response:
{
"success": true,
"data": {
"id": 1,
"name": "ADJ spoty #1 (aktualizováno)",
"scan_id": 12345,
"notes": "Aktualizované poznámky",
"updated_at": 1704067200
}
}
DELETE /kits/global/:id
Smaže globální kit.
Oprávnění: Admin
Response:
{
"success": true,
"data": {
"message": "Kit smazán"
}
}
POST /kits/global/:id/members/assets
Přidá nebo odebere asset z globálního kitu.
Oprávnění: Admin
Request - Přidat:
{
"action": "add",
"asset_id": 1
}
Request - Odebrat:
{
"action": "remove",
"asset_id": 1
}
Response:
{
"success": true,
"data": {
"message": "Asset přidán do kitu"
}
}
POST /kits/global/:id/members/items
Nastaví množství nekonkrétní položky v globálním kitu.
Oprávnění: Admin
Request:
{
"item_id": 10,
"qty": 5
}
Poznámka: qty = 0 odebere item z kitu.
Response:
{
"success": true,
"data": {
"message": "Množství itemu nastaveno"
}
}
Projektové kity
GET /projects/:id/kits
Získá seznam akcových kitů pro projekt.
Oprávnění: Bearer token (vyžaduje autentizaci)
Response:
{
"success": true,
"data": [
{
"id": 1,
"project_id": 5,
"name": "Kabelovka pro akci",
"scan_id": 67890,
"notes": "Kabelovka pro tuto konkrétní akci",
"created_at": 1704067200
}
]
}
GET /projects/:id/kits/:kitId
Získá detail akcového kitu včetně řádků.
Oprávnění: Bearer token (vyžaduje autentizaci)
Response:
{
"success": true,
"data": {
"id": 1,
"project_id": 5,
"name": "Kabelovka pro akci",
"scan_id": 67890,
"notes": "Kabelovka pro tuto konkrétní akci",
"created_at": 1704067200,
"lines": [
{
"id": 1,
"kit_id": 1,
"asset_id": 5,
"asset_scan_id": 12345,
"asset_name": "XLR kabel 1",
"item_id": null,
"item_name": null,
"qty": null,
"source_type": "warehouse",
"source_id": null,
"created_at": 1704067200
},
{
"id": 2,
"kit_id": 1,
"asset_id": null,
"asset_scan_id": null,
"asset_name": null,
"item_id": 10,
"item_name": "XLR kabel",
"qty": 5,
"source_type": "global_kit",
"source_id": 1,
"created_at": 1704067200
}
]
}
}
POST /projects/:id/kits
Vytvoří nový akcový kit pro projekt.
Oprávnění: Producer, Admin
Request:
{
"name": "Kabelovka pro akci",
"scan_id": 67890,
"notes": "Kabelovka pro tuto konkrétní akci"
}
Response:
{
"success": true,
"data": {
"id": 1,
"project_id": 5,
"name": "Kabelovka pro akci",
"scan_id": 67890,
"notes": "Kabelovka pro tuto konkrétní akci",
"created_at": 1704067200
}
}
PUT /projects/:id/kits/:kitId
Upraví akcový kit.
Oprávnění: Producer, Admin
Request:
{
"name": "Kabelovka pro akci (aktualizováno)",
"scan_id": 67890,
"notes": "Aktualizované poznámky"
}
Response:
{
"success": true,
"data": {
"id": 1,
"project_id": 5,
"name": "Kabelovka pro akci (aktualizováno)",
"scan_id": 67890,
"notes": "Aktualizované poznámky",
"updated_at": 1704067200
}
}
DELETE /projects/:id/kits/:kitId
Smaže akcový kit.
Oprávnění: Producer, Admin
Response:
{
"success": true,
"data": {
"message": "Kit smazán"
}
}
POST /projects/:id/kits/:kitId/lines
Přidá, odebere nebo upraví řádek v akcovém kitu.
Oprávnění: Producer, Admin
Request - Přidat asset:
{
"action": "add",
"asset_id": 1,
"source_type": "warehouse",
"source_id": null
}
Request - Přidat item:
{
"action": "add",
"item_id": 10,
"qty": 5,
"source_type": "global_kit",
"source_id": 1
}
Request - Odebrat řádek:
{
"action": "remove",
"line_id": 1
}
Request - Nastavit qty:
{
"action": "set_qty",
"line_id": 2,
"qty": 10
}
Response:
{
"success": true,
"data": {
"message": "Řádek přidán do kitu"
}
}
Business pravidla
Globální kity
- Může obsahovat kombinaci konkrétních assetů a nekonkrétních itemů
- Může být naložen hromadně (pokud je kompletní)
- Pouze Admin může spravovat
Projektové kity
- Může obsahovat kombinaci assetů a itemů
- Může obsahovat informaci odkud to přišlo (
source_type,source_id) - NIKDY nelze naložit hromadně - vždy položkové potvrzení
- Producer a Admin mohou spravovat
Kompletnost kitu
Global kit je kompletní pokud:
- Všechny member assety mají
availability_status = 'AVAILABLE'afunctional_status = 'OK_100' - Všechny member items mají dostatečné
stock_qty
Kódy chyb
VALIDATION_ERROR- Neplatné parametryNOT_FOUND- Kit nebo položka nenalezenaDUPLICATE_SCAN_ID- Scan ID už je použitALREADY_MEMBER- Asset/item už je členem kituINTERNAL_ERROR- Vnitřní chyba serveru