API Přehled
DnA Cruises API je RESTful API postavené na Cloudflare Workers.
Základní URL
- Development:
https://dev.api.dna.cruises - Production:
https://api.dna.cruises
Dočasné URL (před nastavením vlastních domén):
- Development:
https://dna-cruises-api-dev.dnasound.workers.dev - Production:
https://dna-cruises-api.dnasound.workers.dev
Prostředí
API endpointy / a /health vrací informaci o prostředí:
{
"name": "DnA Cruises API",
"version": "1.0.0",
"environment": "development" // nebo "production"
}
Autentizace
Systém je uzavřený - bez účtu a autentizace nelze pracovat s daty. Všechny endpointy kromě těch nutných pro autentizaci vyžadují JWT token v Authorization headeru:
Authorization: Bearer <token>
Veřejné endpointy (bez autentizace): Tyto endpointy jsou jediné, které nevyžadují autentizaci, protože jsou nutné pro přihlášení:
POST /auth/bootstrap- inicializace admin účtuPOST /auth/login- přihlášení pomocí emailu a heslaGET /auth/google- OAuth přesměrováníGET /auth/google/callback- OAuth callbackPOST /auth/passkey/login/start- zahájení přihlášení pomocí passkeyPOST /auth/passkey/login/finish- dokončení přihlášení pomocí passkeyPOST /auth/2fa/verify- 2FA verifikacePOST /auth/2fa/resend- opětovné odeslání SMS kóduGET /files/public/:token- veřejný přístup k souborům přes token
Všechny ostatní endpointy vyžadují autentizaci. Pokud token chybí nebo je neplatný, endpoint vrátí 401 Unauthorized. Bez platného účtu a tokenu není možné přistupovat k žádným datům systému.
Formát odpovědi
Všechny API odpovědi mají následující formát:
{
"success": true,
"data": { ... },
"message": "Volitelná zpráva"
}
Nebo v případě chyby:
{
"success": false,
"error": "ERROR_CODE",
"message": "Chybová zpráva"
}
Endpointy
Health & Info
GET /- API info a prostředíGET /health- Kontrola zdraví s prostředím a časovou značkou
Autentizace
POST /auth/bootstrap- Inicializace admin účtuPOST /auth/login- Přihlášení pomocí emailu a heslaPOST /auth/logout- OdhlášeníGET /auth/me- Informace o aktuálním uživateliPOST /auth/password- Změna heslaPOST /auth/passkey/register/start- Zahájení registrace passkeyPOST /auth/passkey/register/finish- Dokončení registrace passkeyPOST /auth/passkey/login/start- Zahájení přihlášení pomocí passkeyPOST /auth/passkey/login/finish- Dokončení přihlášení pomocí passkeyGET /auth/passkeys- Seznam passkeys uživatelePUT /auth/passkeys/:id- Přejmenování passkeyDELETE /auth/passkeys/:id- Smazání passkeyPOST /auth/2fa/setup- Nastavení 2FA (TOTP nebo SMS)POST /auth/2fa/enable- Aktivace 2FAPOST /auth/2fa/disable- Deaktivace 2FAPOST /auth/2fa/verify- Ověření 2FA kódu během přihlášeníPOST /auth/2fa/resend- Opětovné odeslání SMS kóduGET /auth/google- Zah ájení Google OAuthGET /auth/google/callback- OAuth callback
Items a Assets
GET /items- Seznam items (paginace)GET /items/:id- Získání itemuPOST /items- Vytvoření itemu (Admin)PUT /items/:id- Aktualizace itemu (Admin)DELETE /items/:id- Smazání itemu (Admin)GET /categories- Seznam všech kategoriíGET /assets- Seznam assets (paginace, zobrazuje item_name, owner_id, weight_kg, defects)GET /assets/scan/:scan_id- Vyhledání assetu podle scan_idPOST /assets- Vytvoření assetu (Admin)PUT /assets/:id- Aktualizace assetu (Admin)DELETE /assets/:id- Smazání assetu (Admin)
Projects
GET /projects- Seznam projektů (paginace)GET /projects/:id- Získání projektuPOST /projects- Vytvoření projektu (Producer, Admin)PUT /projects/:id- Aktualizace projektu (Producer, Admin)DELETE /projects/:id- Smazání projektu (Producer, Admin)
Kits
Globální kity (pouze Admin):
GET /kits/global- Seznam globálních kitůGET /kits/global/:id- Získání globálního kitu s členyGET /kits/global/scan/:scan_id- Vyhledání kitu podle scan_idPOST /kits/global- Vytvoření globálního kituPUT /kits/global/:id- Aktualizace globálního kituDELETE /kits/global/:id- Smazání globálního kituPOST /kits/global/:id/members/assets- Přidání/odebrání assetu z kituPOST /kits/global/:id/members/items- Nastavení množství itemu v kitu
Projektové kity (Producer, Admin):
GET /projects/:id/kits- Seznam projektových kitůGET /projects/:id/kits/:kitId- Získání projektového kitu s řádkyPOST /projects/:id/kits- Vytvoření projektového kituPUT /projects/:id/kits/:kitId- Aktualizace projektového kituDELETE /projects/:id/kits/:kitId- Smazání projektového kituPOST /projects/:id/kits/:kitId/lines- Přidání/odebrání/nastavení qty řádku v kitu
Nakládací sessiony
GET /load-sessions- Seznam load sessions (s volitelným filtrem podle statusu)POST /projects/:id/load-sessions- Vytvoření load sessionGET /load-sessions/:id- Získání load sessionGET /load-sessions/:id/plan- Získání plánu nakládky s rozřešenými datyGET /load-sessions/:id/status- Získání statusu session (missing/extra)POST /load-sessions/:id/scan- Zpracování skenu (asset, global kit, project kit)POST /load-sessions/:id/scan/confirm- Potvrzení skenu (asset mimo plán, global kit bulk)POST /load-sessions/:id/plan/add- Přidání položky do plánuPOST /load-sessions/:id/plan/remove- Odebrání položky z plánuPOST /load-sessions/:id/qty- Změna množství itemu (add/remove/set)POST /load-sessions/:id/close- Uzavření load session
Files
POST /files/upload- Nahrání souboru (s podporou project folder structure)GET /files- Seznam souborů (paginace, filtrování podle entity_type a entity_id)GET /files/:id/download- Stažení souboru (autentizovaný nebo veřejný přístup)PUT /files/:id/public- Vygenerování veřejného tokenu pro sdíleníDELETE /files/:id/public- Zrušení veřejného sdíleníDELETE /files/:id- Smazání souboruGET /files/public/:token- Veřejný přístup k souboru (bez autentizace)
Inventory
GET /inventory/sessions- Seznam inventurních sessions (paginace)POST /inventory/sessions- Vytvoření inventurní sessionGET /inventory/sessions/:id/records- Získání záznamů inventury pro sessionPOST /inventory/sessions/:id/scan- Skenování assetu pro inventuruPOST /inventory/sessions/:id/close- Uzavření inventurní session
Audit log
GET /audit- Dotazování audit logu s filtrováním a paginací
Users (pouze Admin)
GET /users- Seznam uživatelůGET /users/search- Vyhledání uživatelůGET /users/:id- Získání uživatelePOST /users- Vytvoření uživatelePUT /users/:id- Aktualizace uživateleDELETE /users/:id- Smazání uživatele
Nasazení
API je automaticky nasazeno přes Cloudflare Workers Builds:
- Production: Automaticky při push do
mainbranch - Development: Automaticky při push do
devbranch
Bindings (D1, R2, environment variables) se automaticky přenášejí z wrangler.toml při každém deployi.