{"id":34354,"date":"2019-10-31T21:57:51","date_gmt":"2019-10-31T18:57:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pisali-api-porvali-xml-dva\/"},"modified":"2019-10-31T21:57:51","modified_gmt":"2019-10-31T18:57:51","slug":"pisali-api-porvali-xml-dva","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pisali-api-porvali-xml-dva","title":{"rendered":"Krijuam API - shkat\u00ebrroj XML (dy)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>API i par\u00eb i MojeSkledi u shfaq 10 vjet m\u00eb par\u00eb. Gjat\u00eb gjith\u00eb k\u00ebsaj kohe, ne kemi punuar mbi versionet ekzistuese t\u00eb API-s\u00eb dhe kemi zhvilluar t\u00eb reja. Disa versione API jan\u00eb tashm\u00eb t\u00eb harxhuara. <\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull do t\u00eb ket\u00eb shum\u00eb informacione: si u krijua API, pse \u00ebsht\u00eb e nevojshme p\u00ebr sh\u00ebrbimin n\u00eb re, \u00e7far\u00eb i ofron p\u00ebrdoruesve, mbi cilat pengesa kemi hasur dhe \u00e7far\u00eb d\u00ebshirojm\u00eb t\u00eb b\u00ebjm\u00eb m\u00eb tej. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEmri im \u00ebsht\u00eb Oleg Alekseev <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/oalexeev\/\" class=\"user_link\">oalexeev<\/a><\/noindex>, un\u00eb jam drejtor teknik dhe bashk\u00ebthemelues i MojeSkledi. <\/p>\n<h2>Pse t\u00eb krijojm\u00eb API p\u00ebr sh\u00ebrbimin<\/h2>\n<p>\nK\u00ebta jan\u00eb klient\u00ebt tan\u00eb, dhe ata jan\u00eb dhjet\u00ebra mij\u00ebra sip\u00ebrmarr\u00ebs q\u00eb p\u00ebrdorin aktivisht zgjidhjet n\u00eb re: bankaria, dyqanet online, menaxhimin e produkteve, CRM. Kur lidhen me nj\u00eb sh\u00ebrbim, \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb ndalen. Tani ve\u00e7se sh\u00ebrbimi i pest\u00eb, t\u00eb tet\u00eb, t\u00eb dhjet\u00eb e b\u00ebn pun\u00ebn e sip\u00ebrmarr\u00ebsve m\u00eb t\u00eb leht\u00eb, por t\u00eb dh\u00ebnat midis k\u00ebtyre sh\u00ebrbimeve n\u00eb re p\u00ebrdoruesit i transferojn\u00eb dorazi. Pun\u00ebt b\u00ebhen nj\u00eb makth.<\/p>\n<p>Zgjidhja m\u00eb e qart\u00eb - t\u2019u jepet p\u00ebrdoruesve mund\u00ebsia p\u00ebr t\u00eb transferuar t\u00eb dh\u00ebnat midis sh\u00ebrbimeve n\u00eb re. P\u00ebr shembull, t\u00eb importojn\u00eb dhe eksportojn\u00eb t\u00eb dh\u00ebna si skedar\u00eb, t\u00eb cil\u00ebt m\u00eb pas mund t\u00eb ngarkohen n\u00eb sh\u00ebrbimin e duhur. Skedar\u00ebt zakonisht i p\u00ebrshtaten formatit t\u00eb \u00e7do sh\u00ebrbimi. Kjo \u00ebsht\u00eb nj\u00eb pun\u00eb manuale m\u00eb shum\u00eb- m\u00eb pak e thjesht\u00eb, por me rritjen e numrit t\u00eb k\u00ebtyre sh\u00ebrbimeve b\u00ebhet gjithnj\u00eb e m\u00eb e v\u00ebshtir\u00eb ta kryesh at\u00eb.<\/p>\n<p>Prandaj, hapi tjet\u00ebr - API. Me t\u00eb, sh\u00ebrbimi n\u00eb re p\u00ebrfiton nga lidhja e disa sh\u00ebrbimeve n\u00eb nj\u00eb pik\u00eb. Shfaqja e nj\u00eb ekosistemi t\u00eb till\u00eb t\u00ebrheq klient\u00eb t\u00eb rinj p\u00ebr shkak t\u00eb mund\u00ebsive shtes\u00eb. Nj\u00eb produkt me funksionalitete t\u00eb reja b\u00ebhet m\u00eb fitimprur\u00ebs dhe m\u00eb i dobish\u00ebm.<\/p>\n<p>N\u00ebse krijoni nd\u00ebrfaqe programore, kjo t\u00ebrheq shit\u00ebs t\u00eb jasht\u00ebm n\u00eb form\u00ebn e programuesve q\u00eb din\u00eb p\u00ebr produktin tuaj fal\u00eb API-s\u00eb. Ata fillojn\u00eb t\u00eb nd\u00ebrtsojn\u00eb zgjidhje mbi baz\u00ebn e API-s\u00eb s\u00eb propozuar dhe fitojn\u00eb para nga automatizimi i detyrave p\u00ebr klient\u00ebt e tyre.<\/p>\n<p>Sistemi i llogarive t\u00eb MojeSklad bazohet n\u00eb procese t\u00eb thjeshta. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb t\u00eb punosh me dokumentet fillestare, mund\u00ebsia p\u00ebr t\u00eb b\u00ebr\u00eb pranime dhe d\u00ebrgesa t\u00eb mallrave, t\u00eb marr\u00ebsh raporte p\u00ebr biznesin n\u00eb baz\u00eb t\u00eb dokumenteve fillestare. Gjithashtu, ka transferim t\u00eb t\u00eb dh\u00ebnave, p.sh. n\u00eb kontabilitetin n\u00eb re, dhe marrjen e tyre nga sistemet bankare ose pikave t\u00eb shitjes. Po ashtu punojm\u00eb me dyqanet online: marrim informacion rreth produkteve dhe d\u00ebrgojm\u00eb t\u00eb dh\u00ebnat p\u00ebr inventarin.<\/p>\n<p><img decoding=\"async\" alt=\"Krijuam API - shkat\u00ebrroj XML (dy)\" src=\"\/wp-content\/uploads\/2019\/05\/aefa36019217c463d2a513a9e025ebc7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>API i par\u00eb i MojeSklad<\/h2>\n<p>\nPas 10 vjet\u00ebsh pune t\u00eb MojeSklad me API, ne kemi grumbulluar nj\u00eb num\u00ebr t\u00eb madh integrimesh q\u00eb lejojn\u00eb shk\u00ebmbimin e t\u00eb dh\u00ebnave, pun\u00ebn me bankat, kryerjen e pagesave dhe p\u00ebrdorimin e telefonis\u00eb s\u00eb jashtme.<\/p>\n<p>N\u00eb vitin e par\u00eb, ne mund\u00ebsuam shkarkimin e \u00e7do t\u00eb dh\u00ebne n\u00eb formatin XML. At\u00ebher\u00eb p\u00ebrdoruesve u dukej m\u00eb e qart\u00eb dhe e njohur t\u00eb mbajn\u00eb t\u00eb dh\u00ebnat offline, dhe jo n\u00eb disa re, dhe ne iu ofruam k\u00ebt\u00eb. Shkarkimi fillonte me eksportin manual nga nd\u00ebrfaqja. Pra, at\u00ebher\u00eb nuk mund ta quanim ende API. <\/p>\n<p>Po at\u00ebher\u00eb filluam t\u00eb bashk\u00ebpunojm\u00eb me kompanin\u00eb Rusagro - ata kishin filluar t\u00eb p\u00ebrdornin nj\u00eb ERP t\u00eb avancuar p\u00ebr planifikimin e prodhimit dhe shitjeve, nd\u00ebrsa ngarkimin e vagon\u00ebve n\u00eb fabrikat e tyre e automatizuan n\u00eb MojeSklad. K\u00ebshtu kemi marr\u00eb fillimet e nj\u00eb API t\u00eb v\u00ebrtet\u00eb: shk\u00ebmbimi midis sh\u00ebrbimit ton\u00eb dhe ERP ndodhte p\u00ebrmes d\u00ebrgimit t\u00eb nj\u00eb skedari t\u00eb madh me t\u00eb dh\u00ebna p\u00ebr t\u00eb gjitha llojet e dokumenteve. <\/p>\n<p>Kjo ishte nj\u00eb mund\u00ebsi e mir\u00eb p\u00ebr shk\u00ebmbimin paketa t\u00eb t\u00eb dh\u00ebnave, por bashk\u00eb me dokumentet duhej t\u00eb transferoheshin edhe var\u00ebsit\u00eb e tyre: informacioni mbi produktet, kontraktuesit dhe magazinat. T\u00eb tilla mbetje nuk \u00ebsht\u00eb aq e v\u00ebshtir\u00eb t\u00eb gjenerosh gjat\u00eb eksportit, por mjaft e v\u00ebshtir\u00eb p\u00ebr t'u analizuar gjat\u00eb importit, pasi n\u00eb nj\u00eb paket\u00eb vijn\u00eb t\u00eb gjitha informacionet: dhe p\u00ebr dokumentet e reja, dhe p\u00ebr ato ekzistues.<\/p>\n<p>API i par\u00eb XML nuk jetoi gjat\u00eb - pas dy vitesh filluam rind\u00ebrtimin e tij. Q\u00eb n\u00eb fillim t\u00eb pun\u00ebs s\u00eb tij, ne b\u00ebm\u00eb disa gabime n\u00eb nd\u00ebrtimin e nd\u00ebrfaqes programore.<\/p>\n<p><img decoding=\"async\" alt=\"Krijuam API - shkat\u00ebrroj XML (dy)\" src=\"\/wp-content\/uploads\/2019\/05\/3f1b04d030e7fcb5add795f8fd75d92b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Si u krijua API XML: ilustruar nga nj\u00eb nga arkitekt\u00ebt tan\u00eb. P\u00ebr m\u00eb tep\u00ebr, pritni artikujt e tij.<\/i><\/p>\n<p>K\u00ebtu jan\u00eb gabimet tona kryesore:<\/p>\n<ol>\n<li>Markup JAXB was done directly on entity beans. To communicate with the database, we use Hibernate, and JAXB markup was also applied to these beans. This error surfaced almost immediately: any update to the data structure necessitated urgent notification of all those using the API, or the creation of workarounds to ensure compatibility with the previous data structure.<\/li>\n<li>The API evolved as a sort of add-on, and initially, we didn't define what part of the product it constituted. We also didn't think about whether the API was something important, or if we needed to maintain backward compatibility for its initial clients. At one point, the number of API users was about 5% of the total small number, and they were not paid much attention. The universal filtering that was implemented led to us being used as a backend. This filtering was not quite GraphQL, but something like it \u2014 it worked through numerous query string parameters. With such a powerful tool, users found it hard to resist, and requests were routed to us directly from their e-commerce UI. The situation became an unpleasant surprise because providing such a service should require a different pricing model and a completely different understanding of the API as a product.<\/li>\n<li>Due to the fact that the API developed not as a core product, the API documentation was produced and published on a residual basis \u2014 through reverse engineering. This approach may seem quite simple and convenient, but it contradicts contract work. This is when there is a component with a predefined scheme of operation. The developer implements it according to this scheme and task, the component undergoes testing, and the client receives a product that meets the analyst's vision. Reverse engineering, however, throws a product onto the market that simply exists: with workarounds, strange solutions, and makeshift options instead of the required functionality. <\/li>\n<li>I gjith\u00eb fluksi i k\u00ebrkesave q\u00eb vinte p\u00ebrmes API-it mund t\u00eb analizohej sa p\u00ebr log-un e Nginx-it ose t\u00eb serverit t\u00eb aplikacionit. Kjo nuk lejonte q\u00eb t\u00eb lokalizoheshin fushat tematike, p\u00ebrve\u00e7 se t\u00eb ndaheshin sipas p\u00ebrdoruesve dhe abonent\u00ebve. N\u00ebse nuk ka mund\u00ebsi p\u00ebr t\u00eb rregulluar regjistrimin e aplikacionit ose t\u00eb klient\u00ebve, \u00ebsht\u00eb e pamundur t\u00eb analizosh situat\u00ebn. Ky problem ka ndikuar m\u00eb pak n\u00eb zhvillimin e API-it, ai \u00ebsht\u00eb m\u00eb shum\u00eb p\u00ebr kuptimin e k\u00ebrkes\u00ebs s\u00eb tij dhe mbushjes me funksionalitet.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P\u00ebrpjekja e dyt\u00eb: REST API<\/h2>\n<p>\nN\u00eb vitin 2010, ne p\u00ebrpiqeshim t\u00eb nd\u00ebrtonim nj\u00eb sistem shk\u00ebmbimi me kontabilitetin online \u2013 Buxhoft. Nuk ia arrit\u00ebm. Megjithat\u00eb, gjat\u00eb procesit t\u00eb integrimit u krijua nj\u00eb API funksional: nj\u00eb sh\u00ebrbim REST p\u00ebr shk\u00ebmbim, ku nuk kishte liri si p\u00ebr thirrjet n\u00eb operacione n\u00eb form\u00ebn e thirrjeve RPC. T\u00eb gjitha komunikimet me API-in u reduktuan n\u00eb m\u00ebnyr\u00ebn standarde p\u00ebr REST: emri i entitetit \u00ebsht\u00eb i p\u00ebrfshir\u00eb n\u00eb vargun e k\u00ebrkes\u00ebs, dhe operacioni q\u00eb kryhet me t\u00eb p\u00ebrcaktohet me metod\u00ebn http. Ne shtuam filtrimin sipas momentit t\u00eb azhurnimit t\u00eb entiteteve, dhe p\u00ebrdoruesit mor\u00ebn mund\u00ebsin\u00eb t\u00eb nd\u00ebrtojn\u00eb replikimin me sistemet e tyre.<\/p>\n<p>N\u00eb t\u00eb nj\u00ebjtin vit u shfaq API p\u00ebr shkarkimin e mbetjeve t\u00eb magazin\u00ebs dhe produkteve. Pjes\u00ebt m\u00eb t\u00eb \u00e7mueshme t\u00eb sistemit u b\u00ebn\u00eb t\u00eb aksesueshme p\u00ebr p\u00ebrdoruesit p\u00ebrmes API-it \u2014 shk\u00ebmbimi i dokumenteve fillestare dhe t\u00eb dh\u00ebnat llogarit\u00ebse p\u00ebr mbetjet dhe cost-in e produkteve.<\/p>\n<p>N\u00eb dhjetor 2015, RetailCRM publikoi bibliotek\u00ebn e par\u00eb t\u00eb pal\u00ebs s\u00eb tret\u00eb p\u00ebr qasjen n\u00eb API-in ton\u00eb. Ajo filloi t\u00eb p\u00ebrdorej mjaft aktivisht, nd\u00ebrkoh\u00eb q\u00eb popullariteti i sh\u00ebrbimit rritej n\u00eb p\u00ebrgjith\u00ebsi, dhe ngarkesa n\u00eb API rritej m\u00eb shpejt se ngarkesa n\u00eb nd\u00ebrfaqen e internetit. Nj\u00eb her\u00eb rritja u shnd\u00ebrrua n\u00eb nj\u00eb shp\u00ebrthim ngarkese. <\/p>\n<p><img decoding=\"async\" alt=\"Krijuam API - shkat\u00ebrroj XML (dy)\" src=\"\/wp-content\/uploads\/2019\/05\/86b289455db8a13f5583cd4eeb377970.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Krijuam API - shkat\u00ebrroj XML (dy)\" src=\"\/wp-content\/uploads\/2019\/05\/da221a6a122ff6d15bcbf9ea09758727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDhe ky shp\u00ebrthim, t\u00eb cilin e tregon \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0441\u043b\u0435\u0432\u0430, i la t\u00eb habitur plot\u00ebsisht serverin q\u00eb sh\u00ebrbente API-in ton\u00eb. Pasi kaluam nj\u00eb jav\u00eb duke e shqyrtuar se \u00e7far\u00eb pik\u00ebrisht po gjeneronte k\u00ebt\u00eb ngarkes\u00eb. Doli se ishin ato k\u00ebrkesa, t\u00eb transmetuara n\u00eb API-in ton\u00eb nga klient\u00ebt. Rreth 50 klient\u00eb e konsumuan t\u00eb gjith\u00eb ngarkes\u00ebn. At\u00ebher\u00eb kuptuam nj\u00eb nga gabimet tona \u2014 munges\u00ebn e plot\u00eb t\u00eb kufijve. <\/p>\n<p>Si n\u00eb p\u00ebrfundim ne vendos\u00ebm nj\u00eb kufi mbi numrin e k\u00ebrkesave t\u00eb nj\u00ebkohshme. Nga nj\u00eb llogari tani mund t\u00eb hapen jo m\u00eb shum\u00eb se dy k\u00ebrkesa n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb. Kjo \u00ebsht\u00eb e mjaftueshme p\u00ebr t\u00eb punuar n\u00eb m\u00ebnyr\u00ebn e replikimit p\u00ebr shk\u00ebmbimin e t\u00eb dh\u00ebnave n\u00eb mod\u00ebn e paketave. Ata q\u00eb donin t\u00eb na p\u00ebrdorin si backend, nga ky moment duhej t\u00eb p\u00ebrputhen m\u00eb shum\u00eb me tarifat, pasi filluan t\u00eb implementojn\u00eb nj\u00eb pun\u00eb me disa llogari n\u00eb softueret e tyre.<\/p>\n<h2>Rregullojm\u00eb gj\u00ebrat<\/h2>\n<p>\nQ\u00eb nga viti 2014, k\u00ebrkesa p\u00ebr API-n\u00eb ekzistuese \u00ebsht\u00eb b\u00ebr\u00eb nj\u00eb pjes\u00eb e r\u00ebnd\u00ebsishme e biznesit, dhe vet\u00eb API ka gjeneruar volumenin m\u00eb t\u00eb madh t\u00eb t\u00eb dh\u00ebnave n\u00eb shk\u00ebmbimin e t\u00eb dh\u00ebnave me klient\u00ebt. N\u00eb vitin 2015 nis\u00ebm projektin p\u00ebr t\u00eb rregulluar API-n\u00eb. Zgjodh\u00ebm formatin JSON n\u00eb vend t\u00eb XML dhe filluam ta nd\u00ebrtojm\u00eb at\u00eb mbi karakteristikat q\u00eb zbuluam gjat\u00eb zbatimit t\u00eb versionit t\u00eb m\u00ebparsh\u00ebm:<\/p>\n<ol>\n<li>Aft\u00ebsi p\u00ebr t\u00eb menaxhuar versionet. Versionimi lejon zhvillimin e nj\u00eb versioni t\u00eb ri pa prekur aplikacionin ekzistues dhe pa e shqet\u00ebsuar funksionimin e p\u00ebrdoruesve. <\/li>\n<li>Aft\u00ebsia p\u00ebr p\u00ebrdoruesin p\u00ebr t\u00eb par\u00eb metadata n\u00eb p\u00ebrgjigjen q\u00eb merr.<\/li>\n<li>Aft\u00ebsia p\u00ebr shk\u00ebmbimin e dokumenteve t\u00eb m\u00ebdha. N\u00ebse ne p\u00ebrpunojm\u00eb nj\u00eb dokument me num\u00ebr pozita m\u00eb tep\u00ebr se 4-5 mij\u00eb, kjo b\u00ebhet nj\u00eb problem p\u00ebr serverin: transaksion i gjat\u00eb, k\u00ebrkes\u00eb http e gjat\u00eb. Kemi nd\u00ebrtuar nj\u00eb mekaniz\u00ebm special q\u00eb lejon p\u00ebrdit\u00ebsimin e dokumentit n\u00eb pjes\u00eb dhe menaxhimin e pozicioneve t\u00eb ve\u00e7anta t\u00eb k\u00ebtij dokumenti duke i d\u00ebrguar ato n\u00eb server.<\/li>\n<li>Mjetet p\u00ebr replikimin ishin gjithashtu n\u00eb versionin e m\u00ebparsh\u00ebm.<\/li>\n<li>Kufijt\u00eb mbi ngarkes\u00ebn \u2014 si trash\u00ebgimi e gabimeve n\u00eb t\u00eb cilat kemi r\u00ebn\u00eb n\u00eb versionin e m\u00ebparsh\u00ebm. Vendos\u00ebm kufij mbi numrin e k\u00ebrkesave n\u00eb nj\u00eb interval kohe, numrin e k\u00ebrkesave paralele dhe k\u00ebrkesat nga nj\u00eb ip-adres\u00eb.<\/li>\n<\/ol>\n<p>\nQ\u00eb nga ajo koh\u00eb kemi l\u00ebshuar dy versione t\u00eb vogla t\u00eb API-s\u00eb dhe kemi nisur disa API t\u00eb specializuara, por si nj\u00eb t\u00ebr\u00ebsi, qasja ka mbetur e pandryshuar. Formati i p\u00ebrdit\u00ebsuar i shk\u00ebmbimit dhe arkitektura e re kan\u00eb lejuar rregullimin e dob\u00ebsive n\u00eb API shum\u00eb m\u00eb shpejt.<\/p>\n<h2>API e Mojosklad sot<\/h2>\n<p>\nSot API e Mojosklad zgjidh shum\u00eb probleme:<\/p>\n<ul>\n<li>shk\u00ebmbimi i t\u00eb dh\u00ebnave me dyqanet online, sistemet e llogarive, bankat;<\/li>\n<li>marrja e t\u00eb dh\u00ebnave t\u00eb llogarive, raportet;<\/li>\n<li>p\u00ebrdorimi si backend p\u00ebr aplikacionet klient \u2014 aplikacionet tona mobile dhe kasa desktop punojn\u00eb n\u00ebp\u00ebrmjet API-s\u00eb.<\/li>\n<li>d\u00ebrgimi i njoftimeve p\u00ebr ndryshimet e t\u00eb dh\u00ebnave n\u00eb M\u00ebngjar\u00ebm \u2014 webhooks;<\/li>\n<li>telefonia;<\/li>\n<li>sistemet e besnik\u00ebris\u00eb.<\/li>\n<\/ul>\n<p>\nN\u00eb baza t\u00eb API, drejtori yn\u00eb i p\u00ebrgjithsh\u00ebm Askar Rakhimberdiev <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/rhino\/\" class=\"user_link\">rhino<\/a><\/noindex> p\u00ebr kat\u00ebr or\u00eb shkroi nj\u00eb telegram-bot q\u00eb merr p\u00ebrmes API mbetjet: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/arahimberdiev\/com-lognex-telegram-moysklad-stock\">github.com\/arahimberdiev\/com-lognex-telegram-moysklad-stock<\/a><\/noindex><\/p>\n<p>Tani numra t\u00eb that\u00eb. <\/p>\n<p>K\u00ebtu \u00ebsht\u00eb statistika jon\u00eb p\u00ebr API-n\u00eb e vjet\u00ebr REST:<\/p>\n<ul>\n<li>400 kompani;<\/li>\n<li>600 p\u00ebrdorues;<\/li>\n<li>2 milion k\u00ebrkesa n\u00eb dit\u00eb;<\/li>\n<li>200 GB\/dit\u00eb trafiku i dal\u00eb.<\/li>\n<\/ul>\n<p>\nDhe ja p\u00ebr \u00e7far\u00eb kemi arritur me t\u00eb gjitha API-t\u00eb e M\u00ebngjar\u00ebs:<\/p>\n<ul>\n<li>m\u00eb shum\u00eb se 70 integrime (disa prej tyre mund t\u00eb shihen k\u00ebtu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.moysklad.ru\/integratsii\/\">www.moysklad.ru\/integratsii<\/a><\/noindex>);<\/li>\n<li>8500 kompani;<\/li>\n<li>12,000 p\u00ebrdorues;<\/li>\n<li>46 milion k\u00ebrkesa n\u00eb dit\u00eb;<\/li>\n<li>2 TB\/dit\u00eb trafiku i dal\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<h2>\u00c7far\u00eb pason<\/h2>\n<p>\nPlanet p\u00ebr zhvillimin e API-s\u00eb jan\u00eb n\u00eb diskutim aktiv. Ne p\u00ebrpiqemi t\u00eb marrim parasysh p\u00ebrvoj\u00ebn e p\u00ebrdorimit, q\u00eb na ofrojn\u00eb p\u00ebrdoruesit. Nuk gjithmon\u00eb dhe jo gjith\u00e7ka arrijm\u00eb ta b\u00ebjm\u00eb menj\u00ebher\u00eb, por nj\u00eb version i ri i API-s\u00eb me metadatat m\u00eb t\u00eb p\u00ebrshtatshme dhe nj\u00eb struktur\u00eb m\u00eb t\u00eb thjesht\u00eb, OAuth p\u00ebr autentifikim, API p\u00ebr integrimin n\u00eb nd\u00ebrfaqen e aplikacioneve \u00ebsht\u00eb af\u00ebr. <\/p>\n<p>Rrjedhni p\u00ebr lajmet n\u00eb nj\u00eb faqe t\u00eb ve\u00e7ant\u00eb p\u00ebr zhvilluesit e integrimeve me M\u00ebngjar\u00ebn: <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.moysklad.ru\">dev.moysklad.ru<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/moysklad\/blog\/453136\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0432\u044b\u0439 API \u041c\u043e\u0435\u0433\u043e\u0421\u043a\u043b\u0430\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f 10 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 API \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435. \u0410 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 API \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u0445\u043e\u0440\u043e\u043d\u0438\u0442\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 API, \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443, \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u043c\u044b \u0443\u0441\u043f\u0435\u043b\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0438 \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u041c\u0435\u043d\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25898,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0432\u044b\u0439 API \u041c\u043e\u0435\u0433\u043e\u0421\u043a\u043b\u0430\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f 10 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 API \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435. \u0410 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 API \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u0445\u043e\u0440\u043e\u043d\u0438\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pisali-api-porvali-xml-dva\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0438\u0441\u0430\u043b\u0438 API \u2014 \u043f\u043e\u0440\u0432\u0430\u043b\u0438 XML (\u0434\u0432\u0430) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0432\u044b\u0439 API \u041c\u043e\u0435\u0433\u043e\u0421\u043a\u043b\u0430\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f 10 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 API \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435. \u0410 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 API \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u0445\u043e\u0440\u043e\u043d\u0438\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pisali-api-porvali-xml-dva\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:57:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:57:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Shkruam API \u2014 cop\u00ebtuam XML (dy) | ProHoster","description":"API i par\u00eb i MojeSkledi u shfaq 10 vjet m\u00eb par\u00eb. Gjat\u00eb gjith\u00eb k\u00ebsaj kohe, ne kemi punuar mbi versionet ekzistuese t\u00eb API-s\u00eb dhe kemi zhvilluar t\u00eb reja. Disa versione API jan\u00eb tashm\u00eb t\u00eb harxhuara.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pisali-api-porvali-xml-dva","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0438\u0441\u0430\u043b\u0438 API \u2014 \u043f\u043e\u0440\u0432\u0430\u043b\u0438 XML (\u0434\u0432\u0430) | ProHoster","og:description":"\u041f\u0435\u0440\u0432\u044b\u0439 API \u041c\u043e\u0435\u0433\u043e\u0421\u043a\u043b\u0430\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f 10 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 API \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435. \u0410 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 API \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u0445\u043e\u0440\u043e\u043d\u0438\u0442\u044c.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pisali-api-porvali-xml-dva","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:57:51+00:00","article:modified_time":"2019-10-31T18:57:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34354","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 18:52:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:23:17","updated":"2026-01-21 18:52:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=34354"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34354\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/25898"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=34354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=34354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=34354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}