Pripravované zmeny vo Web API
Kapitola obsahuje stručný prehľad pripravovaných zmien a úprav súvisiacich so zmenami v API, ku ktorým dôjde v budúcich verziách systému ABRA Gen. Súčasne tu zostanú archivované aj zmeny, ktoré už prebehli, aby bolo možné spätne overiť, v ktorej verzii boli konkrétne zmeny vykonané.
Zmeny, ktoré budú platiť od verzie 26.3 a je potrebné sa na ne pripraviť.
Od verzie 26.3 sa už začne kontrolovať právo na funkciu WebApi - väzba medzi dokladmi. Požiadavky sa vykonajú len v prípade, že bude mať používateľ toto právo nastavené. Aktuálne funguje v režime upozornenia, komu právo chýba, ale požiadavku dovolí vykonať.
Zmeny, ktoré budú platiť od verzie 26.2 a je potrebné sa na ne pripraviť.
Zúčtovanie zálohových listov do faktúr je v API teraz podporované výhradne pomocou importných managerov. Priama editácia objektov receiveddepositusages a issueddepositusages na účely vytvorenia väzby bola zrušená.
Novo sa na endpointe /query kontroluje okrem práva k tlači a exportu nad týmto kontrolérom aj právo k tlači objektu zodpovedajúcemu triede uvedenej v tele dopytu. Vďaka tomu môžu používatelia tlačiť len nad objektmi, ku ktorým majú právo tlačiť.
Bude zavedené právo pre aplikáciu úlohy. Právo na úlohy ako celok. Je teda potrebné si pri prechode na túto verziu nastaviť práva používateľom, ktorí úlohy používajú. Práva sú už dostupné od verzie 26.1. Je ich teda možné používateľom nastaviť už teraz.
Zmeny v tejto kapitole boli plánované do verzie 26.0, ale s ohľadom na nutnú stabilitu legislatívnej verzie 26.0 sa tieto zmeny posúvajú až do verzie 26.1
Od verzie 26.1 API kontroluje, či je položka objektu editovateľná alebo nie. Editovateľnosť položky sa môže meniť počas vytvárania BO, a to podľa toho, ako sa nastavujú iné položky objektu. V prípade, že položka nie je editovateľná, ale dochádza prostredníctvom API k jej nastaveniu, potom je vrátená chyba.
Vypnutie vykonáte v konfiguračnom súbore apiserver.yaml, sekcia API, parameter strictObjectModifyCheck prepnutím na hodnotu false. Napr. strictObjectModifyCheck: false.
Prepnutím týchto parametrov z východiskového nastavenia vedome povoľujete menej bezpečné správanie API, keď môže pri nesprávnom použití dôjsť k vytvoreniu nekonzistentných dokladov.
Kontrola funguje ako pri vytváraní objektov bežným spôsobom cez endpointy, tak aj v stave na serveri.
-
Bude zavedený nový parameter dopytov selectschema, ktorý určuje množinu vracaných polí, ak nie je uvedený parameter select.
-
Bude zavedený nový parameter konfiguračného súboru apiserver.yaml s názvom minimalSelectSchema a hodnotami Áno/Nie, ktorým sa nastavuje správanie, ak v dopyte nie je uvedený ani jeden z parametrov select a selectschema. Od verzie 26.1 bude jeho východisková hodnota Nie. Pre optimalizáciu rýchlosti API je dobré nastaviť hodnotu na Áno.
Od verzie 25.0 je v serverstate naimplementovaný nový spôsob zadávania parametrov do importných manažérov (IM). Tento spôsob má výhodu v tom, že zodpovedá spôsobu práce s BO a zároveň sú jednotlivé parametre importných manažérov (ďalej len IM), na rozdiel od pôvodného spôsobu podrobne zdokumentované. Aby sa predišlo rozdielnemu zadávaniu parametrov IM v rámci API, rozhodli sme o zjednotení aj v klasickom volaní IM. API bude akceptovať nový aj pôvodný spôsob zadávania parametrov do importných manažérov.
(GET, POST, PUT, DELETE /spojenie/BO/ID/kolekcia)
Aby sme zabezpečili správne konzistentné správanie na všetkých BO, možno novo čítať, vytvárať, modifikovať a mazať riadky kolekcií iba cez hlavičkový objekt. V rozšírenom query dopytovaní je aj naďalej možné čítať dáta priamo z objektu riadkov.
Skôr
POST /SPOJENI/firms/1000000101/firmoffices
{“code”: “kancl”}
Nové správanie toto zakazuje a kolekcie sa editujú iba s hlavným BO
PUT /SPOJENI/firms/1000000101
{
“firmoffices”: {“code”: “kancl”}
}
Vypnutie vykonáte v konfiguračnom súbore v APIServer.yam includeCollectionPaths: false nastavením na hodnotu true. Napr. includeCollectionPaths: true.
#false => new way API doesn´t contain special paths for collections
#true => old way API contains paths for collections
Východisková hodnota: false
Bolo zavedené právo pre väzbu medzi dokladmi. Toto právo k funkcii aktuálne funguje v režime upozornenia, komu právo chýba, ale požiadavku dovolí vykonať. V budúcich verziách bude toto právo plne funkčné a požiadavky sa vykonajú len v prípade, že bude mať používateľ toto právo nastavené. Upozornenie prebieha v rámci aplikácie Web API monitoring a zápisom do Servisnej knižky.
Bude zavedené právo pre aplikáciu úlohy. Právo na úlohy ako celok. Je teda potrebné si pri prechode na túto verziu nastaviť práva používateľom, ktorí úlohy používajú. Právo bude zavedené už do verzie 26.1 a kontrolovať sa začne v budúcich verziách.
-
Odstránený endpoint POST /{controller}/query. Namiesto neho treba použiť POST /query
-
Endpoint GET /{controller}/{id}/payments nahradený za endpoint /{controller}/{id}/docpaymentsources
-
Endpoint GET /{controller}/{id}/relations nahradený za endpoint /{controller}/{id}/xrelations
V celom systéme bol na všetkých business objektoch v registrácii fieldov nastavený príznak fkAutoRO pri položkách, ktoré sú určené iba na čítanie. Zoznam všetkých business objektov, pri ktorých boli vykonané úpravy, nájdete v tomto prehľade.
Odporúčame skontrolovať zoznam položiek a v prípade, že niektorú z nich používate na zápis, upraviť príslušný API dopyt (alebo aplikáciu) tak, aby zodpovedal aktuálnemu stavu.
Tieto endpointy budú v rámci verzie 25.4 trvalo odstránené, pretože neboli využívané a ich funkcionalita sa v systéme nepoužívala alebo bola zastaraná. Neexistuje za ne náhrada. Ich odstránenie nebude mať dopad na bežné používanie API.
abrahelpdesksecusers, accaccruals, accdocqueueunusednumbers, appserverconnectionslogs, assetleasingcards, cdconfirmlinks, cdconfirmsettings, crashinfo, crmactivityforoverviews, crmactivityqueueunusednumbers, crpplansettings, crpplanvariants, crpvariantsflows, databoxmessreceivedcontents, databoxmessreceiveds, databoxmesssentcontents, databoxmesssents, devblobs, devices, docqueueunusednumbers, dualcurrencysettings, ecdfiscaltransactions, emailreceiveduidls, execcalccharts, firmmenuitemlinks, firmmenuitemlinks, mlbexcludedperiods, mlbrepeatedroutes, mossservices, msgredirections, namedmasks, payments, payremindersetexclusions, personmenuitemlinks, plmjooutputitems, plmoperationwsis, plmreqcostinginputitems, plmreqcostingoutputitems, plmreqinputitems, plmreqoutputitems, plmreqoutputitems, plmwsirelations, pmobjectstatehistories, poscashnotaccountedpaids, poscashnotaccountedreceiveds, postouchsets, productiontasks, restrictiondispprops, restrictionusages, retirementreportuserdefrows, sitedatas, sourcegroupidenticals, sourcegroups, usedsites, usedsitesactions, useremailhistories, usergridcolumnsdefs, userxlinks, vatclosingdocuments, wageimportrelationheaders, wageimportsabsences, wageimportssickbenefits, wagelistcommons, wageoperationimports, wagesettings, watchdogmessages, whispererdefautocompletes, whispererdeffastsearchs, whispererdeflikes
Tieto endpointy budú presunuté pod iné, nadradené kontroléry, aby správne preberali oprávnenia podľa aktuálnej štruktúry systému. Z dôvodu kompatibility bude volanie pôvodných adries presmerované automaticky na nové umiestnenie, takže nie je nutné upravovať už existujúce klientske volania. Aby však API fungovalo korektne, je potrebné správne nastaviť oprávnenia k novému cieľovému objektu.
| Názov endpointu | Nové umiestnenie |
|---|---|
accgroups
|
/bookentries/accgroups
|
actionstoreprices
|
/actionpricelists/actionstoreprices
|
addresses
|
/firms/addresses
|
annualclearingschildren
|
/annualclearings/annualclearingschildren
|
assetdeprecgroupshistories
|
/assetcards/assetdeprecgroupshistories
|
autoserverqueueitems
|
/autoserverscheduleritems/autoserverqueueitems
|
autoservertaskendlogs
|
/autoserverscheduleritems/autoservertaskendlogs
|
autoservertasklogs
|
/autoserverscheduleritems/autoservertasklogs
|
bankaccountexchangedifferences
|
/bankaccounts/bankaccountexchangedifferences
|
busorderfreals
|
/busorders/busorderfreals
|
busorderinvoicings
|
/busorders/busorderinvoicings
|
busprojectfreals
|
/busprojects/busprojectfreals
|
busprojectinvoicings
|
/busprojects/busprojectinvoicings
|
bustransactionfreals
|
/bustransactions/bustransactionfreals
|
bustransactioninvoicings
|
/bustransactions/bustransactioninvoicings
|
cashdeskexchangedifferences
|
/cashdesks/cashdeskexchangedifferences
|
crmcampaigntypefeedbacks
|
/crmcampaignfeedbacks/crmcampaigntypefeedbacks
|
crmiostateactivityprocesses
|
/crmactivityprocesses/crmiostateactivityprocesses
|
exchangeratehistories
|
/exchangerates/exchangeratehistories
|
intrastatexchangeratehistories
|
/intrastatexchangerates/intrastatexchangeratehistories
|
issueddepositusages
|
/issueddepositinvoices/issueddepositusages
|
issuedofferstatechanges
|
/issuedofferstates/issuedofferstatechanges
|
maininvprotocolpositions
|
/maininvprotocols/maininvprotocolpositions
|
maininvprotocolrows
|
/maininvprotocols/maininvprotocolrows
|
masteraccounts
|
/globdatas/masteraccounts
|
mlbbalances
|
/mlbjourneys/mlbbalances
|
partialinvprotocolpositions
|
/partialinvprotocols/partialinvprotocolpositions
|
partialinvprotocolrows
|
/partialinvprotocols/partialinvprotocolrows
|
receiveddepositusages
|
/receiveddepositinvoices/receiveddepositusages
|
securitytablerights
|
/securityroles/securitytablerights
|
securityuserallowedapps
|
/securityusers/securityuserallowedapps
|
storecardmenuitemlinks
|
/storemenuitems/storecardmenuitemlinks
|
storeprices
|
/pricelists/storeprices
|
storesdocqueues
|
/stores/storesdocqueues
|
subscribers
|
/storecards/subscribers
|
supplierpricelistrows
|
/supplierpricelists/supplierpricelistrows
|
suppliers
|
/storecards/suppliers
|
Tieto endpointy prejdú výraznou zmenou štruktúry alebo logiky. Pôvodný spôsob volania už nebude podporovaný a bude nutné upraviť implementáciu podľa nových pravidiel. V niektorých prípadoch dôjde k nahradeniu priameho volania Web API za prístup cez vlastnené objekty, zjednotený dopytovací mechanizmus alebo budú tieto endpointy zlúčené s inými funkcionalitami. Klientske aplikácie musia byť upravené podľa aktuálnych príkladov a dokumentácie.
/accaccacruals
Endpoint:
GET {server-api}:{port}/{spojeni}/accaccacruals
Bude nahradený:
POST {server-api}:{port}/{spojeni}/query
Telo požiadavky:
{
"class": "PZAO2GUZ40WOBGCOAMMJDJZEM0"
}
/accdocqueueperiods, /crmactivityqueueperiods, /docqueueperiods
Budú vlastneným objektom kolekcie lastnumbers na BO accdocqueues, crmactivitydocqueues a docqueues.
Vrátenie účtovný rad dokladov - obdobie pre zvolený účtovný rad:
GET {server-api}:{port}/{spojeni}/accdocqueues/3600000101?expand=lastnumbers
Alebo je možné vrátiť účtovný rad dokladov - obdobie naprieč všetkými účtovnými radmi:
POST {server-api}:{port}/{spojeni}/query
Telo požiadavky:
{
"class": "CRTZCFMM53D133N2010DELDFKK"
}
/additionalcosts
S týmto objektom sa bude pracovať cez riadok príjemky. Pole AdditionalCosts_ID bude vlastnený objekt.
Pôvodný endpoint:
POST {server-api}:{port}/{spojeni}/additionalcosts
Telo požiadavky:
{
"transportationamount": 42
}
Bude nutné realizovať takto:
PUT {server-api}:{port}/{spojeni}/receiptcards/19R1000101
Telo požiadavky:
{
"rows": [
{
"id": "1BE1000101",
"additionalcosts_id": {
"transportationamount": 42
}
}
]
}
/languagetranslations
Jazykový preklad bude aktualizovaný tak, aby pracoval priamo s objektom, ku ktorému patrí. Viac viď Jazykové preklady.
/payments
Endpoint /payments, ktorý bol predtým dostupný iba ako abstraktné rozhranie na čítanie, bude integrovaný priamo na objekt, ku ktorému patrí.
GET {server-api}:{port}/{spojeni}/issuedinvoices/2400000101/docpaymentsources
/relations, /userxlinks
Z dôvodu zaistenia bezpečnosti a integrity systému bude implementovaný nový, používateľsky prívetivý spôsob prístupu. Viac viď X-väzby.
/userparamvalues
Spôsob práce s hodnotami používateľských parametrov bude aktualizovaný. Zostane zachovaný pôvodný endpoint {controller}/{ID}/userparameters, avšak dôjde k zmene štruktúry tela requestu pri zápise hodnôt. Získavanie hodnôt pomocou GET zostane bez zmeny. Viac viď Používateľské parametre.