Röviden: az API az a felület, amin keresztül egy szoftver nem emberrel, hanem egy másik programmal kommunikál. Ez dönti el, hogy két rendszert egyáltalán össze lehet-e kötni, mennyi idő alatt, és mennyibe fog kerülni. Ezért érdemes már az ajánlatkérés előtt tisztázni, hogy a rendszereidnek van-e API-juk, és az mit enged meg. A legtöbb integrációs terv nem a fejlesztésen bukik el, hanem ezen.
Mi az API valójában?
A legegyszerűbb megközelítés az, hogy egy szoftvernek két felülete van.
Az egyik az, amit te látsz: képernyő, gombok, mezők, listák. Ez embernek készült. Kattintasz, beírsz, mented.
A másik ugyanezekhez az adatokhoz és műveletekhez ad hozzáférést, csak nem embernek, hanem másik programnak. Nincsenek benne gombok, csak kérések és válaszok. Ez az API.
Ha a webshopod „szól” a készletkezelőnek, hogy elkelt két darab a 4471-es cikkből, akkor ez a beszélgetés az API-n keresztül zajlik. Nem nyílik meg semmilyen ablak, nem kattint senki. Egy kérés elmegy, egy válasz visszajön, és a készlet változik.
Ebből következik a lényeg: ha egy szoftvernek nincs ilyen felülete, akkor kívülről csak úgy lehet vele dolgozni, ahogy egy ember tenné. Kattintgatva. Ez pedig lassú, sérülékeny és drága.
Miért ez az első kérdés?
Mert ezen múlik minden további.
Ha van jól működő API, akkor egy integráció általában néhány hetes munka, kiszámítható árral. Ha nincs, akkor vagy kerülőút kell, vagy a rendszert le kell cserélni, vagy a projekt egyszerűen nem valósul meg abban a formában, ahogy elképzelted.
A gyakorlatban ez sokszor csak a fejlesztés közepén derül ki, és onnantól minden csúszik. Ezért érdemes ezt a kérdést az elején feltenni, még mielőtt bárki ajánlatot ad rá.
Attól, hogy van API, még nem biztos, hogy jó
Ez a rész szokott meglepetést okozni. Az „igen, van API-nk” válasz önmagában nagyon keveset mond.
Néhány dolog, ami mögötte lehet:
- Csak olvasni enged. Ki tudod nyerni belőle az adatot, beleírni nem. Egy készletszinkronhoz ez kevés.
- Nincs hozzá dokumentáció. Létezik, de senki nem írta le, hogyan működik. Ilyenkor a fejlesztés fele találgatás és tesztelés.
- Nem valós idejű. Óránként vagy naponta egyszer frissül. Készletnél ez pont az a probléma, amit meg akartál oldani.
- Limitálva van. Percenként vagy naponta korlátozott számú hívást enged. Nagy adatmennyiségnél ez komoly tervezési kérdés.
- Külön csomag kell hozzá. Van, ahol az API-hozzáférés magasabb előfizetési szinthez van kötve, vagy külön díjas.
- Nem mindent enged. Van benne rendelés, de nincs benne számla. Vagy van benne készlet, de nincs benne raktárhely.
Egyik sem végzetes önmagában, csak mindegyik befolyásolja az árat és a megvalósítható működést. Jobb az elején tudni róluk.
Mit kérdezz meg a szoftverszállítódtól?
Ezekre a kérdésekre általában egy e-mailből vagy egy telefonhívásból megvan a válasz, és sokkal többet érnek, mint bármilyen előzetes tervezgetés:
- Van API? Van hozzá nyilvános dokumentáció?
- Olvasásra és írásra is használható?
- Milyen adatok érhetők el rajta keresztül? Rendelés, készlet, ügyfél, számla vagy státusz?
- Valós idejű, vagy időzített szinkron?
- Vannak hívási limitek?
- Benne van a jelenlegi előfizetésemben, vagy külön kell rendelni?
- Van webhook, vagy csak lekérdezni lehet?
- Milyen gyakran változik az API, és kapok róla előre értesítést?
Az utolsó kettő a legritkábban feltett kérdés, pedig évekre kihat.
Webhook vagy lekérdezés?
Kétféleképpen tud egy rendszer értesülni arról, hogy a másikban történt valami.
Lekérdezés
Az egyik rendszer időnként rákérdez: van valami új? Ötpercenként, óránként, ahogy beállítják. Egyszerű, viszont folyamatosan dolgozik akkor is, amikor nincs semmi, és mindig van benne késleltetés.
Webhook
A webhook fordítva működik: amikor történik valami, a rendszer magától szól. Beérkezett egy rendelés, és abban a másodpercben elindul a folyamat. Gyorsabb, kevesebb felesleges hívás, cserébe kezelni kell azt az esetet, amikor az értesítés nem érkezik meg, vagy kétszer érkezik meg.
Ha valós idejű működésre van szükséged, kérdezz rá, hogy van-e webhook. Ha csak ennyit tudsz meg egy szoftverről, már az sokat elárul arról, mennyire komolyan gondolják az integrálhatóságot.
Mi van, ha nincs API?
Nem feltétlenül zsákutca, csak minden változat rosszabb valamiben.
Fájlalapú megoldás
A rendszer tud exportálni CSV-t vagy XML-t, mondjuk éjszakánként egy FTP-re. Ez működik, csak a napi szinkron a maximum, és ha egyszer elmarad a fájl, azt észre kell venni. Magyar piacon ez elég gyakori válasz, és sok esetben teljesen elég.
Adatbázisszintű hozzáférés
Ha saját szerveren fut a rendszer, néha közvetlenül az adatbázisból lehet olvasni. Olvasásra megoldás lehet, írásra általában rossz ötlet, mert megkerüli a szoftver saját szabályait.
Felület automatizálása
Egy program úgy kattintgat, ahogy egy ember tenné. Van, amikor tényleg ez az egyetlen út, de tudni kell, hogy ez a legtörékenyebb megoldás: elég egy felületi változás, és leáll.
Ha egy rendszerből sem API-n, sem fájlon, sem adatbázison keresztül nem lehet adatot kinyerni, előbb-utóbb korlátozni fogja a cég működését.
Az API-nak is van élettartama
Ez a rész szokott kimaradni a tervezésből. Az API nem beton, hanem szoftver, és változik.
A szolgáltató időnként új verziót ad ki, a régit pedig egy idő után kivezeti. Néha bejelenti előre, néha csak annyit veszel észre, hogy egy reggel nem megy a szinkron. Ezért érdemes olyan integrációt építeni, ami naplóz, riaszt, ha elakad, és nem hagyja elveszni a közben megrekedt tételeket.
Ugyanez a helyzet a hozzáférési kulcsokkal: lejárnak, visszavonják őket, vagy a kolléga, akinek a fiókjához kötötték, kilép a cégtől. Érdemes külön technikai felhasználót létrehozni az integrációnak, ne egy ember fiókján keresztül menjen.
Amit az API-król érdemes tisztázni
Minden modern szoftvernek van API-ja?
Nem. A nagyobb nemzetközi rendszereknél alapfelszereltség, a magyar piacon viszont sok olyan program van, amelyiknek nincs, vagy csak korlátozottan van. Új szoftver választásánál érdemes ezt szempontként kezelni akkor is, ha most még nem tervezel integrációt.
Az API-hozzáférés biztonsági kockázat?
Megfelelően kezelve nem. A hozzáférés kulcshoz kötött, visszavonható, és általában szűkíthető arra, hogy pontosan mihez férjen hozzá. Kockázatot inkább az jelent, ha a kulcsot e-mailben küldözgetik, vagy ha mindenki ugyanazt használja.
Mennyibe kerül egy API-integráció?
Attól függ, hány rendszer, hány irány, és mennyi kivételt kell kezelni. Egy egyszerű, egyirányú összekötés jellemzően pár százezer forintos nagyságrend, egy több rendszert érintő, kétirányú szinkron már milliós. A havi üzemeltetési díjat mindkét esetben érdemes külön megkérdezni.
Az AI-hoz is API kell?
Ha egy folyamatnak emberi beavatkozás nélkül kell lefutnia, akkor igen. Az AI ugyanúgy a rendszereitekből dolgozik, mint bármelyik másik integráció, tehát ugyanaz az első kérdés vonatkozik rá is: hozzáfér-e egyáltalán az adathoz.

