Přeskočit na hlavní obsah

Datové typy

Typy jsou pojmenované tak, jak je uvidíte u každého pole v referenci.

TypPopis
stringTextový řetězec (UTF-8)
integerCelé číslo — ID záznamů, page, pageSize
numberDesetinné číslo, oddělovač tečka (1500.10) — částky, počty jednotek (items[].amount) i sazby DPH (items[].vat)
booleantrue nebo false
string(date)Datum ve tvaru YYYY-MM-DD
string(date-time)Datum a čas podle ISO 8601

U částek žádný počet desetinných míst předepsaný není — server je vrací tak, jak mu vyjdou (6000.0). Volitelná pole mohou být null.

Tělo zápisu není tvar odpovědi

Nejčastější omyl na začátku integrace: vzít objekt z GET a poslat ho zpátky do POST nebo PUT. Server ho odmítne. Tvar pro čtení a tvar pro zápis se liší ve třech věcech a platí to napříč zdroji, ne jen u dokladů.

CoGET (odpověď)POST / PUT (požadavek)
vazba na jiný záznamvnořený objekt (customer, supplier, bank_account)ID v poli s příponou _id, případně bank_account jako číslo
dopočtené částkyprice, price_czk, price_inc_vat, to_be_paidneposílají se, server je spočítá sám
pole jen pro čteníid, deleted, accounted, _linksserver je ignoruje

Přesnou dvojici tvarů má každý zdroj v referenci: detail popisuje schéma …Detail, tělo zápisu schéma …Params.

PUT je úplná náhrada

Není to částečná úprava. PUT vyžaduje všechna povinná pole stejně jako vytvoření a co v těle nepošlete, se přepíše výchozí hodnotou nebo se smaže — u dokladů se to nejčastěji projeví na položkách. Než doklad měníte, načtěte si detail, ne položku seznamu: seznam vrací jen podmnožinu polí.

API zároveň nezná If-Match ani ETag, takže dva souběžné zápisy nikdo nerozsoudí — vyhrává ten pozdější. Když nad jedním dokladem pracuje víc procesů, musí si pořadí pohlídat integrace.

Když se odpověď ztratí

Zápisy nejsou idempotentní a API nemá hlavičku typu Idempotency-Key. Zopakovaný POST po vypršení spojení tedy založí druhý záznam.

Obrana se liší podle zdroje. Pole external_code pro váš vlastní identifikátor jde zapsat u zákazníků, dodavatelů, faktur přijatých, zálohových faktur přijatých, interních předpisů nákladů, plateb přijatých a položek ceníku. Před opakováním se jím dá dohledat, jestli záznam už nevznikl — postup je v Synchronizaci adresáře.

Ostatní zdroje tuhle pojistku nemají. Týká se to celé vydané strany včetně faktur vydaných, a objednávek přijatých, kde je external_code jen pro čtení. Tam po neúspěšném zápisu zbývá dohledat doklad podle data, protistrany a částky, než se zápis zopakuje.

Doklady v cizí měně

Doklad nese měnu v poli currency (kód podle Měn, dostupné jen s rozšířením Účtování v cizích měnách). Vedle částek v měně dokladu vrací server dopočtené koruny v polích s příponou _czkprice_czk, price_inc_vat_czk.

Použitý kurz API nevrací ani nepřijímá; v popisu API žádné pole pro kurz není. Když integrace potřebuje přepočet zpětně doložit, musí si ho odvodit z dvojice price a price_czk.

Při filtrování podle částky se price_from a price_to rozumí ve výchozím stavu v korunách. Když je chcete brát v měně dokladu, přidejte filter_price_by_doc_currency=true — viz Filtrování seznamů.

Typy dokladů

Interní identifikátory používané v parametrech typu doctype:

KódZdroj
FVFaktury vydané
FPFaktury přijaté
ZFVZálohové faktury vydané
ZFPZálohové faktury přijaté
ODVOpravné daňové doklady vydané
ODPOpravné daňové doklady přijaté
PVPlatby vydané
PPPlatby přijaté
OPObjednávky
OVObjednávky vydané
PZPřímé zaúčtování
IPNInterní předpisy nákladů
UDUzávěrkový doklad — vzniká uzávěrkou, přes API se nezakládá

Číselníky Typy DPH a Typy účetních položek přijímají jen prvních devět kódů; OP, OV, PZ a UD u nich skončí chybou.

Verzování polí

Pole nebo chování dostupné až od novější verze je v referenci označené v popisu — např. (API 1.3+) u realtime_payment_fetch u bankovních účtů nebo (od verze 1.2) u připojování zálohových faktur k faktuře vydané.