Připravované změny ve Web API
Kapitola obsahuje stručný přehled připravovaných změn a úprav souvisejících se změnami v API, ke kterým dojde v budoucích verzích systému ABRA Gen. Současně zde zůstanou archivovány i změny, které již proběhly, aby bylo možné zpětně ověřit, ve které verzi byly konkrétní změny provedeny.
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ť.
Vyúč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á.
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 teda možné ich používateľom nastaviť už teraz.
Změny v této kapitole byly plánovány do verze 26.0, ale s ohledem na nutnou stabilitu legislativní verze 26.0 se tyto změny posunují až do verze 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, 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 tohto parametra z východzieho nastavenia vedome povoľujete menej bezpečné správanie API, kedy 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ý parametr dotazů selectschema, který určuje množinu vracených polí, pokud není uvedený parametr select.
-
Bude zaveden nový parametr konfiguračního souboru apiserver.yaml s názvem minimalSelectSchema a hodnotami Ano/Ne, kterým se nastavuje chování, pokud v dotazu není uveden ani jeden z parametrů select a selectschema. Od verze 26.1 bude jeho výchozí hodnota Ne. Pro optimalizaci rychlosti API je dobré nastavit hodnotu na ANO.
Od verze 25.0 je v serverstate naimplementován nový způsob zadávání parametrů do importních managerů (IM). Tento způsob má výhodu v tom, že odpovídá způsobu práce s BO a zároveň jsou jednotlivé parametry importních managerů (dále jen IM), na rozdíl od původního způsobu podrobně zdokumentovány. Aby se předešlo rozdílnému zadávání parametrů IM v rámci API, rozhodli jsme o sjednocení i v klasickém volání IM. API bude akceptovat nový i původní způsob zadávání parametrů do importních managerů.
(GET, POST, PUT, DELETE /spojení/BO/ID/kolekce)
Abychom zajistili správné konzistentní chování na všech BO, lze nově číst, vytvářet, modifikovat a mazat řádky kolekcí pouze přes hlavičkový objekt. V rozšířeném query dotazování je i nadále možné číst data přímo z objektu řádků.
Dříve
POST /SPOJENI/firms/1000000101/firmoffices
{“code”: “kancl”}
Nové chování toto zakazuje a kolekce se editují pouze 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ýchozí 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žiadavka 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.
-
Odstraněn endpoint POST /{controller}/query. Místo něj třeba použít POST /query
-
Endpoint GET /{controller}/{id}/payments nahrazen za endpoint /{controller}/{id}/docpaymentsources
-
Endpoint GET /{controller}/{id}/relations nahrazen za endpoint /{controller}/{id}/xrelations
V celém systému byl na všech business objektech v registraci fieldů nastaven příznak fkAutoRO u položek, které jsou určeny pouze pro čtení. Seznam všech business objektů, u nichž byly provedeny úpravy, najdete v tomto přehledu.
Doporučujeme zkontrolovat seznam položek a v případě, že některou z nich používáte pro zápis, upravit příslušný API dotaz (nebo aplikaci) tak, aby odpovídal aktuálnímu stavu.
Tyto endpointy budou v rámci verze 25.4 trvale odstraněny, protože nebyly využívány a jejich funkcionalita se v systému nepoužívala nebo byla zastaralá. Neexistuje za ně náhrada. Jejich odstranění nebude mít dopad na běžné používání 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
Tyto endpointy budou přesunuty pod jiné, nadřazené kontrolery, aby správně přebíraly oprávnění podle aktuální struktury systému. Z důvodu kompatibility bude volání původních adres přesměrováno automaticky na nové umístění, takže není nutné upravovat již existující klientská volání. Aby však API fungovalo korektně, je potřeba správně nastavit oprávnění k novému cílovému objektu.
| Název 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
|
Tyto endpointy projdou výraznou změnou struktury nebo logiky. Původní způsob volání již nebude podporován a bude nutné upravit implementaci podle nových pravidel. V některých případech dojde k nahrazení přímého volání Web API za přístup přes vlastněné objekty, sjednocený dotazovací mechanismus nebo budou tyto endpointy sloučeny s jinými funkcionalitami. Klientské aplikace musí být upraveny podle aktuálních příkladů a dokumentace.
/accaccacruals
Endpoint:
GET {server-api}:{port}/{spojeni}/accaccacruals
Bude nahrazen:
POST {server-api}:{port}/{spojeni}/query
Telo požiadavky:
{
"class": "PZAO2GUZ40WOBGCOAMMJDJZEM0"
}
/accdocqueueperiods, /crmactivityqueueperiods, /docqueueperiods
Budou vlastněným objektem kolekce lastnumbers na BO accdocqueues, crmactivitydocqueues a docqueues.
Vrácení účetní řada dokladů - období pro zvolenou účetní řadu:
GET {server-api}:{port}/{spojeni}/accdocqueues/3600000101?expand=lastnumbers
Nebo je možné vrátit účetní řada dokladů - období napříč všemi účetními řadami:
POST {server-api}:{port}/{spojeni}/query
Telo požiadavky:
{
"class": "CRTZCFMM53D133N2010DELDFKK"
}
/additionalcosts
S tímto objektem se bude pracovat přes řádek příjemky. Pole AdditionalCosts_ID bude vlastněný objekt.
Původní endpoint:
POST {server-api}:{port}/{spojeni}/additionalcosts
Telo požiadavky:
{
"transportationamount": 42
}
Bude nutné realizovat takto:
PUT {server-api}:{port}/{spojeni}/receiptcards/19R1000101
Telo požiadavky:
{
"rows": [
{
"id": "1BE1000101",
"additionalcosts_id": {
"transportationamount": 42
}
}
]
}
/languagetranslations
Jazykový překlad bude aktualizován tak, aby pracoval přímo s objektem, ke kterému náleží. Více viz Jazykové překlady.
/payments
Endpoint /payments, který byl dříve dostupný pouze jako abstraktní rozhraní pro čtení, bude integrován přímo na objekt, ke kterému náleží.
GET {server-api}:{port}/{spojeni}/issuedinvoices/2400000101/docpaymentsources
/relations, /userxlinks
Z důvodu zajištění bezpečnosti a integrity systému bude implementován nový, uživatelsky přívětivý způsob přístupu. Více viz X-vazby.
/userparamvalues
Způsob práce s hodnotami uživatelských parametrů bude aktualizován. Zůstane zachován původní endpoint {controller}/{ID}/userparameters, avšak dojde ke změně struktury těla requestu při zápisu hodnot. Získávání hodnot pomocí GET zůstane beze změny. Více viz Uživatelské parametry.