Changes API¶
Firemní přehled změn¶
Je-li Changes API zapnuté, AbraFlexi zaznamenává všechny operace
vytvoření/aktualizace/smazání napříč evidencemi do changelogu, pod stále
rostoucím číslem globální verze — ideální pro inkrementální synchronizaci
externích systémů (na rozdíl od pouhého pole lastUpdate) a základ pro
Web Hooks.
Čísla verzí nemusí následovat těsně po sobě (z technických důvodů mohou vznikat mezery), ale vždy jsou unikátní a rostoucí.
Licence musí mít aktivní REST API alespoň pro čtení (u nových placených licencí standardně splněno).
Zjištění stavu a zapnutí/vypnutí (webové rozhraní): /c/{firma}/changes/control.
Programově:
PUT nebo POST /c/{firma}/changes/enable.xml
PUT nebo POST /c/{firma}/changes/disable.xml
GET /c/{firma}/changes/status.xml — vrací true/false
Bez aktivního REST API pro čtení/zápis vrací 403 Forbidden.
curl -k -L -u jmeno:heslo -X PUT https://server:5434/c/firma/changes/enable.xml -H Content-Length:0
Získání aktuální globální verze¶
Do libovolného exportu lze doplnit aktuální globální verzi parametrem
?add-global-version=true:
<winstrom version="1.0" globalVersion="6">...</winstrom>
Získání záznamů o změnách¶
GET /c/{firma}/changes.xml
<winstrom version="1.0" globalVersion="6">
<faktura-vydana in-version="3" operation="create" timestamp="2019-01-01 00:00:00.0">
<id>1</id>
</faktura-vydana>
<faktura-vydana-polozka in-version="4" operation="create" timestamp="2019-06-07 12:34:56.7">
<id>1</id>
</faktura-vydana-polozka>
<faktura-vydana in-version="5" operation="update" timestamp="2019-06-07 12:34:56.7">
<id>1</id>
<id>code:VF1-0001/2012</id>
</faktura-vydana>
<next>6</next>
</winstrom>
U každého elementu je uveden číselný <id> a kód (<id>code:KÓD</id>);
měl-li objekt v době operace i nějaká externí ID, jsou uvedena také
(<id>ext:...</id>). Atributy: in-version (verze, ve které ke změně
došlo), operation (create / update / delete). Poslední
element <next> udává, od jaké verze by výpis pokračoval (none,
pokud žádné další změny nejsou).
Parametry výpisu:
Parametr |
Popis |
|---|---|
|
od které verze vypisovat (včetně); výchozí od počátku sledování. |
|
kolik záznamů vypsat; výchozí 100, maximálně 1000. |
|
pro které evidence vypisovat změny; lze uvést vícekrát, jinak všechny. |
V JSON:
{
"winstrom": {
"@globalVersion": "8",
"changes": [
{"@evidence": "faktura-vydana", "@in-version": "3", "@operation": "create",
"@timestamp": "2019-01-01 00:00:00.0", "id": "1", "external-ids": []},
{"@evidence": "faktura-vydana", "@in-version": "5", "@operation": "update",
"@timestamp": "2019-06-07 12:34:56.7", "id": "1",
"external-ids": ["code:VF1-0001/2012"]}
],
"next": "6"
}
}
Synchronizace externích systémů¶
Počáteční nahrání dat: získat aktuální data včetně verze (
?add-global-version=true), uložit je, zapamatovat si verzi (z atributuglobalVersion).Rozdílová synchronizace: stáhnout změny od poslední zapamatované verze (
?start=), stáhnout/aplikovat změněná data (aktualizovat nebo smazat), zapamatovat si novou verzi (z elementunext, případněglobalVersion).Krok 2 opakovat.
Chyba “could not obtain lock on relation”¶
Při prvním zapnutí Changes API se do databáze zavádí podpůrné funkce, což
vyžaduje exkluzivní zámek celé databáze. Pokud se objeví chyba
ERROR: could not obtain lock on relation "...", řešením je odhlásit se
z AbraFlexi (webové rozhraní i klientská aplikace) a akci zopakovat.
Endpointy sledované Changes API (výběr)¶
Changes API pokrývá velmi široký katalog evidencí napříč celou aplikací — adresář a kontakty, ceník a zboží, doklady (faktury, pohledávky, závazky), banka/pokladna/interní doklady, obchodní doklady (nabídky, objednávky, poptávky), sklad, smlouvy, příkazy k úhradě a číselníky plateb, účetnictví (deník, osnova, DPH, střediska, zakázky), kurzy, Intrastat, řady dokladů, i nastavení a systémové evidence (uživatelé, role, štítky, uživatelské dotazy/vazby, filtry). Kompletní a aktuální seznam najdete v anglické verzi této kapitoly nebo přímo v oficiální dokumentaci “Changes API”; zde uvádíme jen nejběžnější:
adresar, kontakt, cenik, faktura-vydana(-polozka),
faktura-prijata(-polozka), banka(-polozka), pokladni-pohyb(-polozka),
interni-doklad(-polozka), objednavka-prijata/vydana(-polozka),
nabidka-prijata/vydana(-polozka), poptavka-prijata/vydana(-polozka),
skladovy-pohyb(-polozka), skladova-karta, smlouva,
prikaz-k-uhrade, ucetni-denik, ucet, stredisko, zakazka,
mena, rada, nastaveni, priloha, uzivatel, role,
stitek, vazba.