{"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\/lv\/blog\/administrirovanie\/pisali-api-porvali-xml-dva","title":{"rendered":"Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>ManaSist\u0113mas pirm\u0101 API versija par\u0101d\u012bj\u0101s pirms 10 gadiem. Visu \u0161o laiku m\u0113s str\u0101d\u0101jam pie eso\u0161aj\u0101m API versij\u0101m un izstr\u0101d\u0101jam jaunas. Da\u017eas API versijas jau ir \u0101tri nokav\u0113tas. <\/p>\n<p>\u0160aj\u0101 rakst\u0101 b\u016bs daudz interesantu lietu: k\u0101 tika izveidota API, k\u0101p\u0113c t\u0101 ir nepiecie\u0161ama m\u0101ko\u0146u pakalpojumiem, ko t\u0101 sniedz lietot\u0101jiem, k\u0101das gr\u016bt\u012bbas esam piedz\u012bvoju\u0161i un ko pl\u0101nojam dar\u012bt t\u0101l\u0101k. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMani sauc O\u013cegs Aleksejevs <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/oalexeev\/\" class=\"user_link\">oalexeev<\/a><\/noindex>, es esmu tehniskais direktors un viena no ManaSist\u0113mas dibin\u0101t\u0101jiem. <\/p>\n<h2>K\u0101p\u0113c veidot API pakalpojumam<\/h2>\n<p>\nM\u016bsu klienti, kas ir desmitiem t\u016bksto\u0161u uz\u0146\u0113m\u0113ju, akt\u012bvi izmanto m\u0101ko\u0146a risin\u0101jumus: banko\u0161ana, interneta veikali, pre\u010du uzskaite, CRM. Pievienojoties vienam pakalpojumam, ir gr\u016bti apst\u0101ties. Un jau piektais, astotais, desmitais pakalpojums padara uz\u0146\u0113m\u0113ja darbu viegl\u0101ku, tom\u0113r dati starp \u0161iem m\u0101ko\u0146a pakalpojumiem tiek p\u0101rvietoti manu\u0101li. Darbs k\u013c\u016bst par \u0161ausm\u0101m.<\/p>\n<p>Ac\u012bmredzams risin\u0101jums ir dot lietot\u0101jiem iesp\u0113ju p\u0101rs\u016bt\u012bt datus starp m\u0101ko\u0146u pakalpojumiem. Piem\u0113ram, import\u0113t un eksport\u0113t datus k\u0101 failus, kurus tad var aug\u0161upiel\u0101d\u0113t vajadz\u012bgaj\u0101 pakalpojuma veid\u0101. Faili parasti tiek piel\u0101goti katra pakalpojuma form\u0101tam. Tas ir vair\u0101k vai maz\u0101k vienk\u0101r\u0161s manu\u0101ls darbs, bet ar \u0161o pakalpojumu skaita pieaugumu to realiz\u0101cija k\u013c\u016bst aizvien gr\u016bt\u0101ka.<\/p>\n<p>T\u0101p\u0113c n\u0101kamais solis ir API. Ar to m\u0101ko\u0146a pakalpojums g\u016bst labumu, jo sasaista vair\u0101kus pakalpojumus vien\u0101 viet\u0101. \u0160\u0101das ekosist\u0113mas par\u0101d\u012b\u0161an\u0101s piesaista jaunus klientus, pateicoties papildu iesp\u0113j\u0101m. Produkts ar jauniem funkcionalit\u0101tes elementiem k\u013c\u016bst izdev\u012bg\u0101ks un noder\u012bg\u0101ks.<\/p>\n<p>Ja izveidojam savus programmat\u016bras saskarnes, tas piesaista tre\u0161o pu\u0161u p\u0101rdev\u0113jus k\u0101 programm\u0113t\u0101jus, kuri uzzina par j\u016bsu produktu, pateicoties API. Vi\u0146i s\u0101k veidot risin\u0101jumus, pamatojoties uz pied\u0101v\u0101to API un pelna naudu, automatiz\u0113jot savu klientu uzdevumus.<\/p>\n<p>ManaSist\u0113mas uzskaites sist\u0113ma balst\u0101s uz vienk\u0101r\u0161\u0101m procesu strukt\u016br\u0101m. Galvenais ir darbs ar pamata dokumentiem, iesp\u0113ja veikt pre\u010du pie\u0146em\u0161anu un izsnieg\u0161anu, sa\u0146emt biznesa zi\u0146ojumus, izmantojot pamata dokumentus. T\u0101pat ir datu nodo\u0161ana, piem\u0113ram, uz m\u0101ko\u0146a gr\u0101matved\u012bbu, un sa\u0146em\u0161ana no banku sist\u0113m\u0101m vai mazumtirdzniec\u012bbas viet\u0101m. V\u0113l m\u0113s str\u0101d\u0101jam ar interneta veikaliem: sa\u0146emam inform\u0101ciju par prec\u0113m un nos\u016bt\u0101m datus par atlikumiem.<\/p>\n<p><img decoding=\"async\" alt=\"Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas)\" src=\"\/wp-content\/uploads\/2019\/05\/aefa36019217c463d2a513a9e025ebc7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Mans pirmais API<\/h2>\n<p>\nP\u0113d\u0113jo 10 gadu laik\u0101, str\u0101d\u0101jot ar API, m\u0113s esam ieg\u016bti da\u017e\u0101das integr\u0101cijas, kas \u013cauj apmain\u012bties ar datiem, str\u0101d\u0101t ar bank\u0101m, veikt maks\u0101jumus un izmantot \u0101r\u0113jo telefonsakaru pakalpojumus.<\/p>\n<p>Pirmaj\u0101 gad\u0101 m\u0113s iesp\u0113ju eksport\u0113t jebk\u0101dus datus XML form\u0101t\u0101. Taj\u0101 laik\u0101 lietot\u0101jiem bija saprotam\u0101k un ierast\u0101k tur\u0113t datus \u0101rpus tie\u0161saistes, t\u0101d\u0113\u013c m\u0113s vi\u0146iem to nodro\u0161in\u0101j\u0101m. Eksportu var\u0113ja uzs\u0101kt manu\u0101li no saskarnes. T\u0101d\u0113\u013c to v\u0113l nevar\u0113ja saukt par API. <\/p>\n<p>Taj\u0101 pa\u0161\u0101 laik\u0101 m\u0113s uzs\u0101k\u0101m sadarb\u012bbu ar uz\u0146\u0113mumu Rus agro \u2014 vi\u0146i jau izmantoja \u201cpiebriedu\u0161o\u201d ERP ra\u017eo\u0161anas pl\u0101no\u0161anai un p\u0101rdo\u0161anai, bet vagonu iekrau\u0161ana r\u016bpn\u012bc\u0101s tika automatiz\u0113ta m\u016bsu platform\u0101. T\u0101d\u0113j\u0101di mums rad\u0101s pirmie \u012bst\u0101 API s\u0101kumi: apmai\u0146a starp m\u016bsu pakalpojumu un ERP notika, nos\u016btot lielu datu failu par visiem dokumentu veidiem. <\/p>\n<p>\u0160is ir pie\u0146emams variants datu partiju apmai\u0146ai, ta\u010du kop\u0101 ar dokumentiem bija j\u0101nodod to atkar\u012bbas: inform\u0101cija par prec\u0113m, sadarb\u012bbas partneriem un noliktav\u0101m. \u0160\u0101du kravu nebija gr\u016bti \u0123ener\u0113t eksport\u0113\u0161anas laik\u0101, bet diezgan gr\u016bti analiz\u0113t import\u0113\u0161anas laik\u0101, jo vien\u0101 paket\u0113 ierad\u0101s visa inform\u0101cija: gan par jauniem dokumentiem, gan par jau eso\u0161ajiem.<\/p>\n<p>Pirmais XML API nedz\u012bvoja ilgi \u2014 p\u0113c diviem gadiem m\u0113s uzs\u0101k\u0101m t\u0101 p\u0101rb\u016bvi. Pat t\u0101 darba s\u0101kum\u0101 m\u0113s pie\u013c\u0101v\u0101m vair\u0101kas k\u013c\u016bdas, veidojot programmat\u016bras interfeisu.<\/p>\n<p><img decoding=\"async\" alt=\"Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas)\" src=\"\/wp-content\/uploads\/2019\/05\/3f1b04d030e7fcb5add795f8fd75d92b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>K\u0101 tika veidots XML API: ilustr\u0101cija no viena no m\u016bsu arhitektiem. Starp citu, gaidiet vi\u0146a rakstus.<\/i><\/p>\n<p>\u0160eit ir m\u016bsu galven\u0101s k\u013c\u016bdas:<\/p>\n<ol>\n<li>JAXB mar\u0137\u0113jums tika izveidots tie\u0161i uz entity beans. M\u0113s sazin\u0101mies ar datu b\u0101zi, izmantojot Hibernate, un uz \u0161iem pa\u0161iem bim izveidota JAXB mar\u0137\u0113jums. \u0160\u012b k\u013c\u016bda uzveic\u0101s gandr\u012bz uzreiz: jebk\u0101da datu strukt\u016bras atjaunin\u0101\u0161ana rad\u012bja nepiecie\u0161am\u012bbu steidzami inform\u0113t visus, kuri izmanto API, vai veidot pagaidu risin\u0101jumus, kas nodro\u0161in\u0101ja sader\u012bbu ar iepriek\u0161\u0113jo datu strukt\u016bru.<\/li>\n<li>API tika izstr\u0101d\u0101ts k\u0101 kaut kas papildus, un s\u0101kotn\u0113ji m\u0113s nebij\u0101m noteiku\u0161i, k\u0101du da\u013cu produkta tas veido. M\u0113s ar\u012b nedom\u0101j\u0101m, vai API ir kaut kas svar\u012bgs, vai ir nepiecie\u0161ams saglab\u0101t atpaka\u013csavienojam\u012bbu pirmajiem klientiem. Uz k\u0101du laiku API lietot\u0101ju skaits bija apm\u0113ram 5% no kop\u0113j\u0101 neliel\u0101 skaita, un to neiev\u0113roja. Laik\u0101, kad tika izstr\u0101d\u0101ta univers\u0101la filtr\u0113\u0161ana, m\u0113s k\u013cuv\u0101m par backend risin\u0101jumu. \u0160\u012b filtr\u0113\u0161ana nebija glu\u017ei GraphQL, bet kaut kas l\u012bdz\u012bgs \u2014 t\u0101 str\u0101d\u0101ja ar neskait\u0101miem piepras\u012bjuma parametriem. Ar tik jaud\u012bgu r\u012bku lietot\u0101jiem bija gr\u016bti attur\u0113ties, un vi\u0146i p\u0101rs\u016bt\u012bja piepras\u012bjumus tie\u0161i no saviem interneta veikaliem. Situ\u0101cija k\u013cuva nepat\u012bkams p\u0101rsteigums, jo \u0161\u0101das pakalpojuma snieg\u0161ana prasa citu cenu nospiedumu un visp\u0101r citu izpratni par API k\u0101 produktu.<\/li>\n<li>T\u0101 k\u0101 API att\u012bst\u012bj\u0101s nevis k\u0101 galvenais produkts, dokument\u0101cija par API tika izstr\u0101d\u0101ta un public\u0113ta p\u0113c atlikumu principa \u2014 caur reverso in\u017eenieriju. \u0160\u0101ds ce\u013c\u0161 \u0161\u0137iet pietiekami vienk\u0101r\u0161s un \u0113rts, bet tas ir pretrun\u0101 l\u012bguma izpildei. Tas ir tad, kad ir k\u0101da sast\u0101vda\u013ca ar iepriek\u0161 noteiktu darba sh\u0113mu. Izstr\u0101d\u0101t\u0101js to \u012bsteno saska\u0146\u0101 ar \u0161o sh\u0113mu un uzdevumu, sast\u0101vda\u013ca iziet test\u0113\u0161anu, klients sa\u0146em produktu, kas atbilst anal\u012bti\u0137a iecerei. Revers\u0101 in\u017eenierija tom\u0113r tirg\u016b izmet produktu, kas vienk\u0101r\u0161i ir: ar risin\u0101jumiem uz balstiem, d\u012bvainiem risin\u0101jumiem un velosip\u0113diem, nevis nepiecie\u0161amo funkcionalit\u0101ti. <\/li>\n<li>Visu piepras\u012bjumu pl\u016bsmu, kas n\u0101ca caur API, var\u0113ja analiz\u0113t ne vair\u0101k k\u0101 k\u0101 Nginx vai lietojumprogrammas servera \u017eurn\u0101lu. Tas ne\u013c\u0101va izcelt priek\u0161metu jomas, vien\u012bgi sadal\u012bt p\u0113c lietot\u0101jiem un abonentiem. Ja nav iesp\u0113ju regul\u0113t pieteikuma vai klientu re\u0123istr\u0101ciju, situ\u0101ciju analiz\u0113t k\u013c\u016bst neiesp\u0113jami. \u0160\u012b probl\u0113ma maz\u0101k ietekm\u0113ja API att\u012bst\u012bbu, t\u0101 vair\u0101k attiec\u0101s uz izpratni par t\u0101 piepras\u012bjumu un funkcionalit\u0101ti.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Otr\u0101 m\u0113\u0123in\u0101juma: REST API<\/h2>\n<p>\n2010. gad\u0101 m\u0113s m\u0113\u0123in\u0101j\u0101m izveidot apmai\u0146as sist\u0113mu ar tie\u0161saistes gr\u0101matved\u012bbu \u2014 BuxSoft. Neizdev\u0101s. Ta\u010du integr\u0101cijas proces\u0101 par\u0101d\u012bj\u0101s pilnv\u0113rt\u012bgs API: REST pakalpojums apmai\u0146ai, kur\u0101 nev\u0113l\u0113j\u0101mies izmantot br\u012bv\u012bbu, piem\u0113ram, RPC izsaukumiem. Visa komunik\u0101cija ar API tika samazin\u0101ta l\u012bdz standarta REST re\u017e\u012bmam: piepras\u012bjuma rind\u0101 ir entit\u0101tes nosaukums, bet oper\u0101cija, kas ar to tiek veikta, tiek noteikta, izmantojot http metodi. M\u0113s pievienoj\u0101m filtr\u0113\u0161anu p\u0113c entit\u0101\u0161u atjauno\u0161anas br\u012b\u017ea, un lietot\u0101jiem rad\u0101s iesp\u0113ja veidot replik\u0101ciju ar sav\u0101m sist\u0113m\u0101m.<\/p>\n<p>Taj\u0101 pa\u0161\u0101 gad\u0101 tika izveidots API kr\u0101jumu un pre\u010du atlikumu eksportam. Lietot\u0101jiem caur API k\u013cuva pieejamas visv\u0113rt\u012bg\u0101k\u0101s sist\u0113mas da\u013cas \u2014 s\u0101kotn\u0113jo dokumentu apmai\u0146a un apr\u0113\u0137inu dati par atlikumiem un pre\u010du pa\u0161izmaksu.<\/p>\n<p>2015. gada decembr\u012b RetailCRM public\u0113ja pirmo tre\u0161o pu\u0161u bibliot\u0113ku piek\u013cuvei m\u016bsu API. To s\u0101ka diezgan akt\u012bvi izmantot, un taj\u0101 pa\u0161\u0101 laik\u0101 auga pakalpojuma popularit\u0101te, slodze uz API pieauga \u0101tr\u0101k nek\u0101 slodze uz t\u012bmek\u013ca interfeisu. Reiz augums p\u0101rv\u0113rt\u0101s par slodzes pieaugumu. <\/p>\n<p><img decoding=\"async\" alt=\"Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas)\" src=\"\/wp-content\/uploads\/2019\/05\/86b289455db8a13f5583cd4eeb377970.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas)\" src=\"\/wp-content\/uploads\/2019\/05\/da221a6a122ff6d15bcbf9ea09758727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn \u0161is pieaugums, uz kuru nor\u0101da bulti\u0146a pa kreisi, izbr\u012bn\u012bja serveri, kas apkalpo m\u016bsu API. M\u0113s ned\u0113\u013cu izp\u0113t\u012bj\u0101m, k\u0101du slodzi t\u0101 \u0123ener\u0113. Izr\u0101d\u012bj\u0101s, ka tie ir tie pa\u0161i piepras\u012bjumi, kas tiek nos\u016bt\u012bti uz m\u016bsu API no klientu frontiem. To visu rad\u012bja apm\u0113ram 50 klienti. Tie\u0161i tad m\u0113s saprat\u0101m vienu no sav\u0101m k\u013c\u016bd\u0101m \u2014 piln\u012bgu limitu tr\u016bkumu. <\/p>\n<p>Galu gal\u0101 m\u0113s ievies\u0101m ierobe\u017eojumu uz vienlaic\u012bgu piepras\u012bjumu skaitu. No viena konta tagad var\u0113ja vienlaikus atv\u0113rt ne vair\u0101k k\u0101 divus piepras\u012bjumus. Tas bija pietiekami, lai str\u0101d\u0101tu replik\u0101cijas re\u017e\u012bm\u0101 datu apmai\u0146ai pakot\u0146u re\u017e\u012bm\u0101. Bet tie, kas v\u0113l\u0113j\u0101s izmantot m\u016bs k\u0101 aizmuguri, no \u0161\u012b br\u012b\u017ea bija spiesti lab\u0101k atbilst tarifiem, jo \u200b\u200bieviesa sav\u0101s programm\u0101s darbu ar vair\u0101kiem kontiem.<\/p>\n<h2>Uzlabojam<\/h2>\n<p>\nJau kop\u0161 2014. gada piepras\u012bjums p\u0113c eso\u0161\u0101 API ir k\u013cuvis par svar\u012bgu biznesa da\u013cu, un pats API \u0123ener\u0113ja visliel\u0101ko datu apjomu datu apmai\u0146\u0101 ar klientiem. 2015. gad\u0101 m\u0113s uzs\u0101k\u0101m projektu API sak\u0101rto\u0161anai. M\u0113s izv\u0113l\u0113j\u0101mies JSON form\u0101tu, nevis XML, un s\u0101k\u0101m to izstr\u0101d\u0101t, \u0146emot v\u0113r\u0101 iepriek\u0161\u0113j\u0101s versijas realiz\u0101cijas laik\u0101 atkl\u0101t\u0101s \u012bpatn\u012bbas:<\/p>\n<ol>\n<li>Iesp\u0113ja p\u0101rvald\u012bt versijas. Versiju p\u0101rvald\u012bba \u013cauj izstr\u0101d\u0101t jaunu versiju, nep\u0101rtraucot eso\u0161o lietojumprogrammu un netrauc\u0113jot lietot\u0101ju darbu. <\/li>\n<li>Iesp\u0113ja lietot\u0101jam redz\u0113t metadatus tie\u0161i atbild\u0113, ko vi\u0146\u0161 sa\u0146em.<\/li>\n<li>Iesp\u0113ja apmain\u012bties ar lieliem dokumentiem. Ja m\u0113s apstr\u0101d\u0101jam dokumentu ar vair\u0101k nek\u0101 4-5 t\u016bksto\u0161iem poz\u012bciju, tas k\u013c\u016bst par probl\u0113mu serverim: gara transakcija, gar\u0161 http piepras\u012bjums. Esam izveidoju\u0161i \u012bpa\u0161u meh\u0101nismu, kas \u013cauj atjaunin\u0101t dokumentu pa da\u013c\u0101m un p\u0101rvald\u012bt atsevi\u0161\u0137\u0101s \u0161\u012b dokumenta poz\u012bcijas, nos\u016btot t\u0101s uz serveri.<\/li>\n<li>Replik\u0101cijas r\u012bki \u2013 tie bija ar\u012b iepriek\u0161\u0113j\u0101 versij\u0101.<\/li>\n<li>Nosl\u0113gtie slodzes ierobe\u017eojumi \u2013 k\u0101 mantojums no gr\u0101bek\u013ciem, uz kuriem uzk\u0101pa iepriek\u0161\u0113j\u0101 versij\u0101. Ievies\u0101m ierobe\u017eojumus piepras\u012bjumu skaitam laika posm\u0101, paral\u0113lo piepras\u012bjumu skaitam un piepras\u012bjumiem no viena ip adrese.<\/li>\n<\/ol>\n<p>\nNo t\u0101 br\u012b\u017ea esam izlaidusi divas maz\u0101s API versijas un palaidu\u0161i vair\u0101kas specializ\u0113tas API, ta\u010du kopum\u0101 pieeja palikusi nemain\u012bga. Atjaunotais apmai\u0146as form\u0101ts un jaun\u0101 arhitekt\u016bra \u013c\u0101va labot tr\u016bkumus API daudz \u0101tr\u0101k.<\/p>\n<h2>MansKr\u0101jums API \u0161odien<\/h2>\n<p>\n\u0160odien MansKr\u0101jums API risina daudz uzdevumu:<\/p>\n<ul>\n<li>datu apmai\u0146a ar interneta veikaliem, uzskaites sist\u0113m\u0101m, bank\u0101m;<\/li>\n<li>apr\u0113\u0137inu datu, zi\u0146ojumu sa\u0146em\u0161ana;<\/li>\n<li>izmanto\u0161ana k\u0101 aizmugures da\u013ca klientu lietojumprogramm\u0101m \u2013 m\u016bsu mobil\u0101s lietojumprogrammas un darbvirsmas kases str\u0101d\u0101 caur API<\/li>\n<li>pazi\u0146ojumu s\u016bt\u012b\u0161ana par datu izmai\u0146\u0101m MansKr\u0101jum\u0101 \u2013 webhooks;<\/li>\n<li>telefoni;<\/li>\n<li>lojalit\u0101tes sist\u0113mas.<\/li>\n<\/ul>\n<p>\nBalstoties uz API, m\u016bsu \u0123ener\u0101ldirektors Askars Rahimberdijevs <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/rhino\/\" class=\"user_link\">rhino<\/a><\/noindex> \u010detru stundu laik\u0101 uzrakst\u012bja telegram botu, kas ieg\u016bst atlikumus caur API: <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>Tagad sausie cipari. <\/p>\n<p>L\u016bk, m\u016bsu statistika par veco REST API:<\/p>\n<ul>\n<li>400 uz\u0146\u0113mumu;<\/li>\n<li>600 lietot\u0101ju;<\/li>\n<li>2 miljoni piepras\u012bjumu dien\u0101;<\/li>\n<li>200 Gb\/dien\u0101 izejo\u0161\u0101 trafika.<\/li>\n<\/ul>\n<p>\nUn \u0161eit ir tas, ko m\u0113s sasniedz\u0101m visos MansKr\u0101jums API:<\/p>\n<ul>\n<li>vair\u0101k nek\u0101 70 integr\u0101ciju (da\u013cu no t\u0101m var skat\u012bt \u0161eit <noindex><a rel=\"nofollow\" href=\"https:\/\/www.moysklad.ru\/integratsii\/\">www.manskr\u0101jums.lv\/integr\u0101cijas<\/a><\/noindex>);<\/li>\n<li>8500 uz\u0146\u0113mumu;<\/li>\n<li>12 000 lietot\u0101ju;<\/li>\n<li>46 miljoni piepras\u012bjumu dien\u0101;<\/li>\n<li>2 Tb\/dien\u0101 izejo\u0161\u0101 trafika.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kas notiek t\u0101l\u0101k<\/h2>\n<p>\nAPI att\u012bst\u012bbas pl\u0101ni \u0161obr\u012bd ir akt\u012bv\u0101 apspried\u0113. M\u0113s cen\u0161amies \u0146emt v\u0113r\u0101 lietot\u0101ju sniegto ekspluat\u0101cijas pieredzi. Ne vienm\u0113r un ne visu var izdar\u012bt uzreiz, bet jauna API versija ar \u0113rt\u0101kiem metadatiem un vienk\u0101r\u0161\u0101ku strukt\u016bru, k\u0101 ar\u012b OAuth autentifik\u0101cijai un API tiem, kas integr\u0113jas lietot\u0146u interfeis\u0101, ir tuvu. <\/p>\n<p>Sekot jaunumiem var speci\u0101l\u0101 m\u0101jaslap\u0101, kas paredz\u0113ta integr\u0101ciju izstr\u0101d\u0101t\u0101jiem ar MoimSklad: <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.moysklad.ru\">dev.moysklad.ru<\/a><\/noindex>.<br \/>\n<br \/>Avots: <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.5 - 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\/lv\/blog\/administrirovanie\/pisali-api-porvali-xml-dva\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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\udd47Rakst\u012bj\u0101m API \u2014 pl\u0113\u0161am XML (divas) | ProHoster","description":"ManaSist\u0113mas pirm\u0101 API versija par\u0101d\u012bj\u0101s pirms 10 gadiem. Visu \u0161o laiku m\u0113s str\u0101d\u0101jam pie eso\u0161aj\u0101m API versij\u0101m un izstr\u0101d\u0101jam jaunas. Da\u017eas API versijas jau ir \u0101tri nokav\u0113tas.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/pisali-api-porvali-xml-dva","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/34354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=34354"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/34354\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/25898"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=34354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=34354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=34354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}