Zoznam zmien
2026-10-07: GET /api/v1/payouts/ready vracia stránky
Spätne nekompatibilná zmena štruktúry existujúceho endpointu.
- Odpoveď je štandardná stránkovaná obálka.
GET /api/v1/payouts/readyvracia{ items, page, pageSize, total, totalPages }ako všetky ostatné zoznamové endpointy, namiesto holého poľa. Riadky vitemssa nemenia. - Parametre dopytu
pageapageSize. Predvolené jepage1 apageSize20, maximum 100. Načítavajte stránky, kým neplatípage >= totalPages, aby ste prečítali všetky záznamy pripravené na výplatu. - Pred výplatou načítajte všetky stránky. Vyplatené záznamy zo zoznamu miznú, takže sa zostávajúce
záznamy presúvajú na predchádzajúce stránky. Najprv načítajte všetky stránky, odstráňte duplicity
podľa
ida až potom vytvorte výplatu cezPOST /api/v1/payouts. Pri výplate stránku po stránke niektoré záznamy preskočíte. - Poradie sa nemení. Naposledy schválené záznamy sú prvé.
2026-10-05: vehicleId pri výdavkoch, ktoré nie sú kilometrovné, sa ignoruje
Zmena správania existujúcich endpointov; štruktúra bez zmeny.
- Vozidlo si ponechávajú len výdavky na kilometrovné.
POST /api/v1/travel-entries/{id}/expenses,PUT /api/v1/travel-entries/{id}/expenses/{expenseId}aexpensesvPOST /api/v1/travel-entriesukladajú výdavok za palivo, mýto, parkovanie, ubytovanie alebo iný výdavok bez vozidla a každé čítanie preň vraciavehicle: null.vehicleIdodoslané pri takom výdavku sa doteraz ukladalo a vracalo v odpovedi. - Existujúce hodnoty sa mažú. Pri aktualizácii sa odstráni vozidlo uložené pri
existujúcich výdavkoch, ktoré nie sú kilometrovné, takže aj tie vracajú
vehicle: null. - Vozidlo mimo vašej firmy sa odmieta pri každom type výdavku. Ak
vehicleIdoznačuje vozidlo mimo vašej firmy, API vracia 400VALIDATION_FAILED, aj pri výdavkoch okrem kilometrovného. Pri týchto výdavkoch endpointy pre jednotlivý výdavok doteraz ukladalivehicleIdbez kontroly. Archivované služobné vozidlo pri výdavku, ktorý nie je kilometrovné, užPOST /api/v1/travel-entriesneodmieta; ignoruje sa tam ako každé iné vozidlo.
2026-10-03: vytvorenie vozidla odmietne neznámy type
Zmena správania pri existujúcom endpointe; štruktúra bez zmeny.
POST /api/v1/vehicless hodnotoutypemimoCompanyaPersonalvracia 400. Číselná hodnota ako2(odstránený typ pre verejnú dopravu) sa doteraz uložila. Teraz ju odmietne odpoveď 400VALIDATION_FAILEDpoderrors.Type, ako toPUT /api/v1/vehicles/{id}už robil.
2026-10-03: nové oprávnenie ManageVehicles na zmeny vozidiel
Nová hodnota enumu a zmeny oprávnení pri existujúcich endpointoch pre vozidlá; štruktúra bez zmeny.
ManageVehiclesvCompanyPermissions. Nový atomický príznak na správu firemných áut: samotné vozidlá, ich náklady, dokumenty, termíny a pripomienky e-mailom. Odpovede s údajmi o zamestnancoch aj webhookové správy ho uvádzajú ako každý iný príznak a každýCompanyAdminho teraz má.ManageCompanyDatanaďalej pokrýva oddelenia, nákladové strediská a výmenné kurzy, vozidlá už nie.- Operácie meniace vozidlá vyžadujú
ManageVehicles.POST /api/v1/vehicles,PUT /api/v1/vehicles/{id},DELETE /api/v1/vehicles/{id},POST /api/v1/vehicles/{id}/archiveaPOST /api/v1/vehicles/{id}/unarchivevracajú 403 volajúcemu bez neho, bez ohľadu na ostatné oprávnenia. Každý zamestnanec, ktorý mal pred týmto vydanímManageCompanyData, dostalManageVehicles, takže žiadny existujúci používateľ nestratí prístup. - Čítanie súkromných vozidiel ostatných zamestnancov vyžaduje
ManageVehicles.GET /api/v1/vehiclesaGET /api/v1/vehicles/{id}vracajú súkromné vozidlá ostatných zamestnancov iba volajúcemu s oprávnenímManageVehiclesaleboEditAllEntries(doterazManageCompanyData). - Posielajte späť celý zoznam. Klient, ktorý zahodí neznáme názvy príznakov a
potom zapíše oprávnenia zamestnanca späť, tomuto zamestnancovi odoberie
ManageVehicles. Pri spätnom odosielaní oprávnení neznáme názvy zachovajte. - Predvoľba
FleetManagerna vstupe. Zápis oprávnení prijímaFleetManager, ktorý server uloží akoReadAllEntriesaManageVehicles. Výstupom zostáva zoznam atomických príznakov.
2026-10-03: výkon motora pri vozidlách
Aditívne pole kontraktu; štruktúra bez zmeny.
enginePowerKwpri vozidlách. Požiadavky na vytvorenie a úpravu vozidla prijímajú voliteľný maximálny výkon motora ako celé číslo v kilowattoch (pole P.2 osvedčenia o evidencii vozidla, 1 až 2000) a vracajú ho tak odpoveď s detailom vozidla, ako aj zoznam vozidiel. Pri úprave vynechanie uloženú hodnotu ponechá a0ju vymaže.
2026-10-03: poškodené bajty obrázka pri multipart prílohách vracajú 400
Zmena správania dvoch existujúcich endpointov; štruktúra bez zmeny.
POST /api/v1/travel-entriesmultipart príloha s poškodenými bajtami obrázka vracia 400. Príloha, ktorej deklarovaný typ je obrázok, ale ktorej bajty sa nedajú dekódovať ako obrázok, doteraz končila s 500. Teraz je odmietnutá odpoveďou 400VALIDATION_FAILEDpoderrors.attachments, v rovnakej štruktúre ako akýkoľvek iný odmietnutý typ prílohy.POST /api/v1/travel-entries/{id}/attachmentss rovnako poškodeným obrázkom tiež vracia 400. Endpoint pre prílohy doteraz v tomto prípade rovnako končil s 500. Teraz je požiadavka odmietnutá odpoveďou 400VALIDATION_FAILEDpoderrors.File, v rovnakej štruktúre ako akýkoľvek iný odmietnutý typ prílohy.
2026-10-02: odstránenie vozidla odmietne používané vozidlo, nový endpoint na archiváciu
Zmena správania existujúceho endpointu a jeden nový endpoint; bez zmeny štruktúry.
DELETE /api/v1/vehicles/{id}vracia 409 pre používané vozidlo. Vozidlo, ktoré je na náhrade cestovného príkazu alebo má zadaný náklad, sa už namiesto odstránenia nearchivuje. Odstránené cestovné príkazy a odstránené náhrady či náklady sa nepočítajú, takže vozidlo možno odstrániť, keď ho odoberiete z náhrad a vymažete jeho náklady. Požiadavka je odmietnutá odpoveďou 409CONFLICTa vozidlo zostane bez zmeny. Vozidlo bez takých záznamov, archivované alebo nie, sa naďalej odstráni s odpoveďou 204.POST /api/v1/vehicles/{id}/archive. Archivuje vozidlo, používané alebo nie, a vráti ho sisArchived: true. Takto sa archivuje vozidlo, ktorého odstránenie je odmietnuté. Archivácia archivovaného vozidla nič nemení;POST /api/v1/vehicles/{id}/unarchiveju vracia späť. Vyžaduje rovnaké oprávnenieManageCompanyDataako odstránenie.
2026-09-28: zastarané prepísanie mimo nočného okna
Zastarané polia; bez zmeny štruktúry.
nightOffWindowOverrideanightOverrideReasonpri paušáloch cestovného príkazu. Obe polia v odpovedi zostávajú, jeden prvok na noc, ale každý prvok je terazfalse, resp.null. Prepísanie, ktoré vykazovali, je zrušené: odpoveď pre noc kratšiu ako šesť hodín sa zadáva ceznightAllocationa žiadne prepísanie nemení sumu. Prestaňte ich čítať; v niektorej z ďalších verzií môžu byť odstránené.
2026-09-28: vstupy pre cenu pohonnej látky pri náhradách za použitie vozidla
Pridané polia kontraktu; bez zmeny štruktúry.
fuelUnitPriceOverrideamileagePetrolGradepri výdavkoch. Požiadavky na vytvorenie aj úpravu výdavku prijímajú obe polia, vrátane výdavkov vnorených do požiadavky na vytvorenie cestovného príkazu, a každá odpoveď s výdavkom ich vracia, aj vnútri cestovného príkazu.fuelUnitPriceOverrideje cena pohonnej látky za liter (za kWh pri elektrickom vozidle) preukázaná dokladom, v základnej mene spoločnosti; na riadku náhrady za použitie vozidla v CZ alebo SK nahrádza priemernú cenu podľa predpisu v zložke za pohonné látky.mileagePetrolGrade(Octane95aleboOctane98) vyberá priemernú cenu benzínu Natural 95 alebo Natural 98 podľa českej vyhlášky pre vlastné vozidlo na benzín bez ceny z dokladu. Každé pole sa ukladá len tam, kde ovplyvňuje ocenenie riadku, inde jenull. Úprava je úplné nahradenie: ak ich vynecháte, riadok sa prepočíta priemernou cenou podľa predpisu, pri benzíne cenou Naturalu 95, preto pošlite hodnoty, ktoré výdavok vrátil, aby ste zachovali cenu z dokladu alebo benzín 98.
2026-09-16 — nákladové strediská pri zamestnancoch
Pridané pole kontraktu; bez zmeny štruktúry.
costCenterIdspri zamestnancoch. Odpoveď s detailom zamestnanca aj zoznam zamestnancov vracajú nákladové strediská, na ktoré zamestnanec smie účtovať, a požiadavky na vytvorenie aj úpravu zamestnanca ich prijímajú. Prázdny zoznam znamená bez obmedzenia — k dispozícii sú všetky aktívne nákladové strediská firmy. Pri vytváraní je vynechanie poľa to isté ako poslanie prázdneho zoznamu. Pri úprave vynechanie zachová uložený zoznam, prázdny zoznam ho vymaže a zoznam s hodnotami ho celý nahradí. Každé id musí patriť vašej firme, inak je požiadavka odmietnutá s 400. Pridanie nákladového strediska mimo zoznamu na cestovný príkaz je naďalej odmietnuté s 400 — práve kvôli tomuto odmietnutiu pole existuje. Obmedzenie platí len pre pridávanie: už priradené nákladové strediská sa spätne neodstraňujú, keď stredisko zo zoznamu vypadne. Pri zápise platí bezpečnostná hranica 100 rôznych nákladových stredísk na zamestnanca — duplicity sa počítajú raz a schéma túto hranicu publikuje akomaxItemsv oboch telách požiadavky. Stráži veľkosť požiadavky, nie je to obchodný limit: zoznam môže uviesť len nákladové strediská, ktoré firma skutočne má, takže vás v praxi neobmedzí.
2026-09-13 — sumy stravného podľa itinerára v zákonnom čase
Opravené sumy na existujúcich endpointoch stravného podľa itinerára; bez zmeny štruktúry.
- Výpočet stravného podľa itinerára a
from-itinerary. Hodnotytimepri zastávkach sa naďalej čítajú ako UTC a vrátené okná sú naďalej v UTC. Českým a slovenským firmám sa kalendárne dni teraz delia o polnoci pražského, resp. bratislavského času, nie o polnoci UTC. Poľské firmy počítajú noci (21:00–07:00), doby a dátumy účtov podľa varšavského času. Rovnaká požiadavka preto môže pre tieto trhy vrátiť iné hodiny a sumy ako predtým.
2026-09-12 — category je pri úprave vozidla voliteľný
Uvoľnené pole v existujúcej požiadavke; bez zmeny štruktúry.
categorypri úprave vozidla. Pole je teraz voliteľné. Ak ho vynecháte, uložená kategória zostane nezmenená; pošlite ho, keď ju chcete zmeniť, vrátane0na zámerné vymazanie. Pri vytváraní zostáva pole povinné.
2026-08-23 — objem motora pri vozidlách
Aditívne pole kontraktu; bez zmeny štruktúry.
engineCapacityCcpri vozidlách. Požiadavky na vytvorenie a úpravu vozidla prijímajú voliteľný objem motora ako celé číslo v cm³ a vracajú ho tak odpoveď s detailom vozidla, ako aj zoznam vozidiel. Pri úprave vynechanie uloženú hodnotu ponechá a0ju vymaže.
2026-08-17 — locked teraz hlási zámky dokumentov
Opravená sémantika hodnoty existujúceho poľa odpovede; bez zmeny štruktúry.
lockedv odpovediach na detail a zoznam cestovných príkazov predtým hlásilo iba staršiu blokáciu z importu pred rokom 2023 a zostávalofalsepri dokumentoch zamknutých v aplikácii, vrátane automatického zámku uplatneného pri výplate. Teraz nesie rovnaký odvodený stav zámku, aký už hlási webhookentry.updatedvisLocked:truevždy, keď je dokument uzavretý pre zápis. Chápte to ako “tento záznam nemožno upraviť”, nie ako označenie konkrétneho pôvodu zámku.
2026-07-13 — place id, ručné kurzy, prepísania stravného, smer kurzu
Aditívne, spätne kompatibilné polia kontraktu a nový diskriminátor kurzu.
- Place id na cestovných príkazoch. Požiadavky na vytvorenie a aktualizáciu
prijímajú
departureLocationPlaceIdadestinationPlaceId(Google Placesplace_id) a odpoveď cestovného príkazu ich vracia. Pošlite uložené hodnoty späť pri aktualizácii s úplnou náhradou, aby ste zachovali identitu miesta pri úprave textu cieľa. - Cieľová krajina na cestovných príkazoch. Požiadavky prijímajú nepovinný
destinationCountryCode(ISO 3166-1 alpha-2). Keď je zadaný, uloží sa priamo a serverová záloha geocoding sa preskočí. - Ručné kurzy. Požiadavky na výdavky a stravné prijímajú nepovinný
manualExchangeRatea požiadavky cestovného príkazumanualAdvanceExchangeRatepre preddavok. Každý sa rešpektuje iba vtedy, keď poskytovateľ kurzu nezverejní kurz pre referenčný dátum; odoslanie, keď existuje oficiálny kurz, sa odmietne sEXCHANGE_RATE_UNAVAILABLE. - Prepísania stravného. Požiadavka na stravné prijíma
overrideAmountaoverrideReasona čítacie modely stravného ich vracajú. Na zachovanie existujúceho prepísania pri aktualizácii s úplnou náhradou pošlite hodnoty späť; ich vynechanie vymaže prepísanie a vráti sa k zákonnej výplate. - Smer kurzu.
GET /api/v1/reference/exchange-ratesteraz nesie diskriminátordirection:ForeignPerBase(HNB / ECB) znamená kurz deliť pre prevod na základnú menu,BasePerForeign(CNB) znamená násobiť.
2026-07-08 — dátum preddavku, poskytovateľ kurzu pre CZ/SK
Dve aditívne, spätne kompatibilné zmeny.
- Dátum preddavku na cestovných príkazoch. Požiadavky na vytvorenie a
aktualizáciu teraz prijímajú nepovinný
advancePaymentDate(yyyy-MM-dd) a odpoveď cestovného príkazu ho vracia. Ak je pri vytvorení vynechaný, server použije dátum záznamu. Určuje dátum kurzu pre preddavok a pri českých tenantoch referenčný dátum kurzu pre stravné. - Poskytovateľ kurzu pre CZ/SK.
GET /api/v1/reference/exchange-ratesteraz dokumentuje úplnú sadu poskytovateľov: HNB pre HR, ECB pre SI a SK, CNB pre CZ. Polesourcemôže byť"CNB"abaseCurrencyje natívna mena poskytovateľa (EUR pre HNB/ECB, CZK pre CNB). Správanie sa nemení; dokumentácia teraz zodpovedá behu.
2026-06-11 — počty jedál, pôvod menového kurzu, kód pre nedostupný výmenný kurz
Tri aditívne zmeny rozhrania. Všetky sú spätne kompatibilné: existujúce payloady naďalej fungujú bez zmeny a nové polia v odpovediach sú doplnky, ktoré môžete ignorovať, kým ich nebudete potrebovať.
- Počty jednotlivých jedál pri vytváraní/aktualizácii diet. Požiadavky na diéty teraz prijímajú
breakfastsProvided,lunchesProvidedadinnersProvided(celočíselné počty jednotlivých jedál) plus voliteľné dennémealsProvidedAllocation. Predstavujú kánonický model zápisu: server z týchto počtov prepočítava zníženie. Existujúci v1 agregátmealsProvidedje stále akceptovaný; keď polia pre jednotlivé jedlá chýbajú, server mapuje agregát ako predtým, takže starší klienti nie sú ovplyvnení. Odpovede naďalej vracajú odvodenémealsProvided(obed + večera, formát podľa chorvátskeho Pravilnika) spolu s počtami jednotlivých jedál, takže cesty na čítanie zostávajú nezmenené. - Pôvod menového kurzu (FX) v odpovediach. Odpovede pre výdavky a diéty získavajú
exchangeRateSourcea odpoveď pre cestovný záznam získavaadvancePaymentExchangeRateSource, ktoré zaznamenávajú, odkiaľ pochádza použitý kurz: kód poskytovateľa ("HNB","ECB") pre oficiálny kurz,"MANUAL"pre kurz zadaný používateľom, alebonullpre riadok v rovnakej mene (bez konverzie) či starší riadok uložený pred sledovaním pôvodu. Iba na čítanie; žiadna zmena v požiadavke. - Nový chybový kód
EXCHANGE_RATE_UNAVAILABLE(HTTP 400). Spustí sa, keď poskytovateľ menových kurzov pre tenanta nezverejní žiadny kurz pre danú menu v požadovanom dátume a neexistuje žiadny historický kurz, na ktorý by sa dalo spoľahnúť. Ide o zlyhanie z rodiny validácií so štandardným telomerrorskľúčovaným podľa polí, takže môžete špecificky rozlíšiť prípad nedostupného kurzu a vyzvať na manuálne zadanie kurzu. Pridané do katalógu chýb.
2026-05-23 — časy itinerára pre diéty ukladané ako skutočné UTC (oprava)
Časy diét ukladané cez
POST /api/v1/travel-entries/{id}/per-diems/from-itinerary sa teraz ukladajú ako
skutočné UTC okamihy. Predtým sa odchod/príchod každej cesty zapisoval pomocou
hodnoty lokálneho času označenej ako UTC bez posunu (lokálna cesta o 08:00 bola uložená
ako 08:00Z namiesto 07:00Z/06:00Z), takže riadky vygenerované z itinerára sa nezhodovali
s manuálne pridanými riadkami o 1–2 hodiny a zobrazovali sa neskoro. Schémy požiadaviek a
odpovedí zostávajú nezmenené, ale hodnoty departureTime/arrivalTime,
ktoré tento endpoint vracia (a ktoré vracajú aj neskoršie čítania tých istých riadkov), teraz odrážajú
opravený UTC okamih. Náhľad bezstavovej kalkulačky stále vracia
lokálne časy. Sumy diét nie sú ovplyvnené.
2026-05-23 — kalkulačka diét + uloženie celej cesty
Rozhranie na výpočet diét je konsolidované a získava paritu ukladania celej cesty s webovou aplikáciou locco.
- Nové
POST /api/v1/utilities/per-diems/calculate— bezstavová kalkulačka. Odošlite itinerár (jedna cesta = itinerár s 2 zastávkami) a získajte späť vypočítané riadky s aplikovaným prerozdelením na úrovni itinerára. Žiadny kontext záznamu, nič sa neukladá. - Nové
POST /api/v1/travel-entries/{id}/per-diems/from-itinerary— prebudovanie diét cestovného záznamu z itinerára v jednom volaní. Server znova spustí svoj vlastný engine nad zastávkami (odoslaným sumám sa nikdy nedôveruje), aplikuje jedlá pre jednotlivé cesty kľúčované podľa(countryCode, departureTime)(dvojice, ktoré vracia kalkulačka), a potom atomicky nahradí diéty záznamu. Toto reprodukuje prerozdelenie na úrovni itinerára a upgrady domácich jednotiek, čo odosielanie riadkov po jednom nedokáže. - Odstránené
POST /api/v1/travel-entries/{id}/per-diems/computeaPOST /api/v1/per-diems/calculate-simple. Obe sú nahradené pomocouutilities/per-diems/calculate— jedna cesta je len itinerár s 2 zastávkami. Presuňte integrácie na novú kalkulačku.
2026-05-22 — podpora slovinského trhu
Počiatočná podpora pre slovinských tenantov. Aktualizujte svojho klienta z obnoveného
OpenAPI snapshotu na /api-reference/:
- Slovinské obce — nové
GET /api/v1/reference/slovenian-municipalitiesvracia zoznam obcí SURS pre rozbaľovacie zoznamy miest v slovinských cestovných formulároch. Volateľné z akéhokoľvek tenanta. - Daňová rezidencia zamestnanca — záznamy zamestnancov získavajú pole
residency(Resident/NonResident) pre vykazovanie slovinských diét a daní zo mzdy. Predvolená hodnota jeResident.
2026-04-28 — spustenie v1.0
Prvé stabilné vydanie locco partner API. Každé rozhranie je prepojené,
typované a pokryté OpenAPI snapshotom na
/api-reference/:
- Cestovné záznamy — plný CRUD plus prechody workflowu (odoslať, schváliť, zamietnuť, zrušiť, vyžiadať zmeny), s atomickými vytváraniami, ktoré v jednom volaní prijímajú vnorené výdavky, diéty, alokácie na nákladové strediská a prílohy.
- Prílohy — priame nahrávanie do cestovného záznamu cez
POST /api/v1/travel-entries/{id}/attachments. Multipart, až 5 súborov na požiadavku. - Webhooks — registrácia odberu s jednorazovým zobrazením signing-secret, história doručovania pre každý odber a endpoint na opakovanie pre zlyhané alebo vyčerpané doručenia.
- Výplaty — zoznam záznamov pripravených na výplatu, vytváranie dávok, história zoznamov, vymazanie dávky.
- Zamestnanci, Oddelenia, Vozidlá, Nákladové strediská — CRUD + zoznam, s hodnotami vlastných polí pri zamestnancoch.
- Referencie — chorvátske obce, menové kurzy HNB, tabuľka sadzieb diét, zoznamy povolených krajín a povolených mien spoločnosti.
- Spoločnosť — čítanie profilu.
Hodnoty enum pre Status, TravelType, PayoutMethod a ostatné sú
zdokumentované v OpenAPI schéme ako zoznamy povolených hodnôt enum: [...], takže
vygenerovaní klienti sa viažu na kánonické reťazce ("PendingApproval",
"BankTransfer", atď.) namiesto nepriehľadných hodnôt.