API pre vlastné integrácie
Cez API pripojíte k PLEVIXu vlastný e-shop, sklad alebo interný systém. Typické použitie: na vašom e-shope padne objednávka a faktúra sa objaví v PLEVIXe bez toho, aby ju niekto prepisoval ručne.
Ako to funguje
Do PLEVIXu vedú dvoje dvere. Cez hlavné chodí človek — prihlási sa a klikne. Cez API chodí program a namiesto hesla ukáže API kľúč. Podľa kľúča PLEVIX vie, komu patrí, ktorej firmy sa týka a čo smie robiť.
1. Vytvorenie kľúča
Kľúč si vytvoríte v Nastaveniach profilu v sekcii API kľúče. Pri vytvorení si vyberiete rozsah — či má kľúč len čítať, alebo aj zapisovať.
2. Overenie
Kľúč posielate v hlavičke každej požiadavky:
Na jeden kľúč platí limit 120 požiadaviek za minútu. Po prekročení príde 429; počkajte do ďalšej minúty.
3. Čo API vie
Overí kľúč a vráti firmu, balík a rozsahy. Použite ho na skúšku, či je všetko nastavené.
Zoznam faktúr aktívnej firmy. Podporuje ?limit= (najviac 200) a ?od= na stránkovanie, ?firma= na výber firmy. Vyžaduje rozsah faktury.citanie.
Jedna faktúra podľa vnútorného id alebo podľa čísla dokladu.
Vloží faktúru do PLEVIXu. Vyžaduje rozsah faktury.zapis.
Odpoveď 202 znamená, že návrh čaká v PLEVIXe:
Kontakty z CRM aktívnej firmy. Jeden kontakt cez /api/v1/kontakty/{id} alebo podľa e-mailu. Vyžaduje rozsah kontakty.citanie.
Objednávky z Eshopu. Jedna objednávka cez /api/v1/objednavky/{id} alebo podľa čísla. Vyžaduje rozsah objednavky.citanie.
Skladové položky a množstvá. Jedna položka cez /api/v1/sklad/{sku}. Vyžaduje rozsah sklad.citanie.
Vytvorí nový záznam, alebo upraví existujúci, keď pošlete id. Vyžaduje rozsah kontakty.zapis, objednavky.zapis alebo sklad.zapis.
Odpoveď 201 pri novom zázname, 200 pri úprave — v oboch prípadoch s id, ktoré si uložte, ak chcete záznam neskôr meniť.
Ako to, že si zápisy navzájom neprepíšu prácu
Aplikácia v mobile aj v prehliadači si posiela celý svoj zoznam. Keby server jednoducho zapísal to, čo prišlo, váš zápis cez API by zmizol pri najbližšej synchronizácii z telefónu — a naopak.
Preto sa zlučuje po jednotlivých záznamoch: každý záznam má vlastný čas zmeny a vyhráva novší. Záznam, ktorý pozná len jedna strana, sa nikdy nezahodí. Zmazanie zanecháva stopu, takže sa zmazaný záznam nevráti z druhého zariadenia — ale keď ho niekto po zmazaní znova upraví, úprava je novšia a záznam ožije.
Všetky zoznamy podporujú ?limit= (najviac 200), ?od= a ?firma=. Kľúč vidí iba nástroje, ktoré má váš balík — inak vráti 402.
Export pre účtovný program
Parameter ?format=pohoda vráti faktúry ako POHODA XML (dataPack) namiesto JSON — súbor, ktorý účtovník naimportuje priamo do programu. Filtre ?zmenene_od= a ?firma= platia rovnako, takže sa dá stiahnuť napríklad presne jeden mesiac.
Cena položky sa posiela bez dane a sadzba ako none, low alebo high — konkrétne percento si POHODA dopĺňa sama podľa obdobia. Zaúčtovanie (predkontácie) neposielame; to si účtovník nastavuje vo svojom programe.
Sťahujte len to, čo sa zmenilo
Parameter ?zmenene_od= vráti iba záznamy zmenené po danom čase. Uložte si aktualizovane z poslednej odpovede a nabudúce ho pošlite späť — namiesto celého zoznamu dostanete len rozdiel.
Čas zapíšte v tvare ISO 8601. V adrese nezabudnite zakódovať + ako %2B, inak sa z neho stane medzera a časové pásmo sa stratí. Filtruje sa vždy pred stránkovaním, takže spolu hovorí, koľko záznamov sa naozaj zmenilo.
Príklad v PHP
Webhooky — keď sa má PLEVIX ozvať vám
API rieši smer „váš systém sa pýta PLEVIXu". Webhook je opačný: keď zákazník uhradí faktúru, váš e-shop sa to dozvie sám, bez toho, aby sa každú minútu pýtal.
Cieľ pridáte v Nastaveniach profilu v sekcii Webhooky. Zadáte adresu a vyberiete udalosti. Tlačidlom Skúška si overíte spracovanie skôr, než príde ostrá udalosť.
Aké udalosti chodia
| Udalosť | Kedy nastane |
|---|---|
faktura.vytvorena | V PLEVIXe pribudla nová faktúra. |
faktura.uhradena | Faktúra bola označená ako uhradená. |
objednavka.nova | V Eshope pribudla nová objednávka. |
objednavka.odoslana | Objednávka prešla do stavu „Odoslaná". |
Pri objednávkach nesie data polia id, cislo, zakaznik, suma, stav, dopravca a zasielka.
Ako správa vyzerá
Na vašu adresu príde POST s JSON telom:
Overenie podpisu — toto nepreskočte
Vašu adresu môže poznať ktokoľvek, kto ju odpozerá. Preto každú správu podpisujeme tajomstvom, ktoré poznáte len vy a PLEVIX. Podpis je v hlavičke:
Podpisuje sa reťazec čas + "." + telo algoritmom HMAC-SHA256. Overenie v PHP:
Čo od vášho servera čakáme
- Adresa musí byť https:// a verejne dostupná. Adresy do vnútornej siete odmietame — inak by sa dal náš server prinútiť sťahovať cudzie vnútro.
- Cieľ musí mať IPv4 adresu. Server dostupný len cez IPv6 zatiaľ nepodporujeme.
- Odpovedzte kódom 2xx do 5 sekúnd. Dlhé spracovanie si odložte na neskôr a odpovedzte hneď.
- Keď neodpoviete, skúšame päťkrát s narastajúcim odstupom (1, 2, 4, 8 minút). Potom správu zahodíme a v profile uvidíte dôvod.
- Po troch takto zahodených správach cieľ vypneme, aby sme doň netĺkli donekonečna. Zapnete ho pridaním nanovo.
- Tá istá správa môže prísť aj dvakrát (napríklad keď vaša odpoveď cestou zapadne). Spracovanie si preto zaistite podľa
data.id, nech sa úhrada nezapíše dvakrát.
Odpovede a chyby
Každá chyba nesie okrem vety pre človeka aj kód pre stroj v poli code. Vyhodnocujte kód, nie text — texty sa môžu spresniť, kódy zostanú.
| HTTP | code | Čo znamená |
|---|---|---|
200 | — | V poriadku. |
201 | — | Záznam vznikol. |
202 | — | Prijaté, čaká na potvrdenie v PLEVIXe. |
401 | missing_key | Hlavička Authorization chýba. |
401 | invalid_key | Kľúč neexistuje alebo bol zrušený. |
402 | plan_required | Balík neobsahuje API. Vyžaduje sa Business Pro. |
403 | missing_scope | Kľúč nemá potrebný rozsah — ktorý, je v poli rozsah. |
403 | team_product_denied | Vo firme vám tento nástroj nepovolil správca. |
404 | company_not_found | Firma nepatrí tomuto účtu. |
404 | not_found | Záznam s takým id neexistuje. |
404 | unknown_path | Neznáma cesta. |
405 | method_not_allowed | Tá cesta túto metódu nepodporuje. |
413 | payload_too_large | Jeden záznam smie mať najviac 64 kB, faktúra najviac 200 položiek. |
422 | missing_field | Chýba povinné pole — ktoré, je v poli pole. |
422 | too_many_items | Priveľa položiek na jeden doklad. |
422 | no_fields | Telo neobsahovalo žiadne použiteľné pole. |
429 | rate_limited | Prekročený limit 120 požiadaviek za minútu na kľúč. Presné číslo je aj v odpovedi v poli limit. |
Bezpečnosť
- Kľúč je uložený len ako odtlačok — z databázy sa spätne prečítať nedá.
- Zrušenie kľúča platí okamžite pri najbližšej požiadavke.
- Kľúč vidí výhradne údaje firiem, ktoré patria jeho účtu.
- Pri každom použití sa zaznamená čas a IP adresa — v profile vidíte, kedy bol kľúč naposledy použitý.
- Kľúč držte v premennej prostredia alebo v nastaveniach servera, nie v zdrojovom kóde a nie v repozitári.
Čo API zatiaľ nevie
Cez API sa dnes dajú čítať aj zapisovať kontakty z CRM, objednávky z Eshopu a skladové položky, čítať faktúry a vytvárať faktúru ako návrh na potvrdenie. Zatiaľ nie sú dostupné Banka a pokladňa ani účtovníctvo — tam je doklad viazaný na uzávierky a zápis zvonku by musel riešiť aj ich. Ak vám niečo konkrétne chýba, napíšte na support@plevixbusiness.com; podľa toho určíme poradie.