1 Úvod
HTTP REST API služby VášDoklad.cz je založeno na výměně JSON dokumentu mezi klientem a serverem, s výjimkou operací uploadu souborů obrázků, certifikátů a klíčů. Server na základě takto předaných dat poskytuje odpověď. Pro testování lze použít nástroj stejnojmenné knihovny: curl.
2 Uživatel
Operace spojené s uživatelským účtem řeší samostatná specifikace REST API služby https://cloud.4smart.cz. Uživatelský účet entita sdílená mezi službami VášDoklad.cz a cloud.4smart.cz spolu s veškerým nastavením.
HTTP REST API služby cloud.4smart.cz:
https://cloud.4smart.cz/specifikace_rest_api.pdf
Pro generování dokladů v e-shopu nebo jiné online službě není třeba odkazovaný dokument studovat. Postačí vytvoření účtu s pomocí aplikace.vasdoklad.cz a následně implementace vybraných níže uvedených funkcí podle tohoto dokumentu.
2.1 Získání informací o aktuálním tarifu uživatele
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/tariff-get.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo"
}
Příklad odpovědi:
{„tariff“: 3}
2.2 Přepnutí tarifu
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/tariff-switch.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
„tariff“: „3“
}
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
3 Operace s adresářem Dodavatele / Provozovny
O tom, zda jde o provozovnu nebo dodavatele rozhoduje kontext ukládaných dat.
3.1 Získání seznamu dodavatelů / provozoven
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/list-suppliers.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50"
}
Pozn.: Pokud není uveden atribut id spolu s hodnotou, je vrácen seznam všech provozoven / dodavatelů. Je-li uvedeno id, jsou vráceny pouze informace o konkrétní provozovně / dodavateli reprezentované tímto interním číslem.
Příklad odpovědi:
{
"50": {
"logo": true,
"advertisement": true,
"company": "Spolecnost s.r.o.",
"addr_1": "Novákova 12",
"addr_2": "Vy\u0161kov",
"postal": "123 45",
"ic": "01234567",
"dic": "CZ01234567",
"phone": "+420 910 111 426",
"web": "https://it-techcz.com",
"email": "kontakt@it-techcz.com",
"bank_name": "Komer\u010dn\u00ed banka a.s.",
"bank_account": "115-3474420297/0100",
"bank_iban": "CZ90 0100 0001 1534 7442 0297",
"bank_swift": "KOMBCZPP",
"tax_payer": 0,
"additional_comment_1": "Spolecnost s.r.o.
se s\u00eddlem Novákova 12, 123 45 Pustim\u011b\u0159, je zaps\u00e1na v obchodn\u00edm rejst\u0159\u00edku, veden\u00e9m u Krajsk\u00e9ho soudu v Brn\u011b, odd\u00
edl C, vlo\u017eka 95878.",
"additional_comment_2": "Dovolujeme si V\u00e1s upozornit, \u017ee v p\u0159\u00edpad\u011b nedodr\u017een\u00ed data splatnosti uveden\u
00e9ho na faktu\u0159e V\u00e1m budeme \u00fa\u010dtovat \u00farok z prodlen\u00ed v dohodnut\u00e9, resp. z\u00e1konn\u00e9 v\u00fd\u0161i",
"additional_comment_3": "a smluvn\u00ed pokutu (byla-li ujedn\u00e1na)"
}
}
3.2 Odstranění dodavatele / provozovny
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-supplier.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50"
}
Pozn.: Parametr id je povinný.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
3.3 Import dodavatele / provozovny
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/import-supplier.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"supplier": {
"company": "Spolecnost s.r.o.",
"addr_1": "Novákova 12",
"addr_2": "Vyškov",
"postal": "123 45",
"ic": "01234567",
"dic": "CZ1212121218",
"phone": "+420 910 111 426",
"web": "https://it-techcz.com",
"email": "kontakt@it-techcz.com",
"bank_name": "Komerční banka Kč",
"bank_account": "115-3474420297/0100",
"bank_iban": "cz90 0100 0001 1534 7442 0297",
"bank_swift": "KOMBCZPP",
"tax_payer": false,
"additional_comment_1": "Spolecnost s.r.o. se sídlem Novákova 12, 123 45 Pustiměř, je zapsána v obchodním rejstříku, vedeném u Krajského soudu v Brně, oddíl C
, vložka 95878.",
"additional_comment_2": "Dovolujeme si Vás upozornit, že v případě nedodržení data splatnosti uvedeného na faktuře Vám budeme účtovat úrok z prodlení v dohod
nuté, resp. zákonné výši",
"additional_comment_3": "a smluvní pokutu (byla-li ujednána)."
}
}
Odpověď
serveru: stavový kód 200 při
úspěchu, nebo jiný.
Povinné položky: login, password, supplier, company, addr_1, addr_2, postal, ic, dic, tax_payer.
3.4 Aktualizace existujícího dodavatele / provozovny
Aktualizace položky dodavatele / provozovny v adresáři se provádí stejným postupem jako její vytvoření. V JSON dokumentu, který klient odesílá na server musí být navíc uveden atribut id aktualizované položky.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/import-supplier.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelské-heslo",
„ id“: „50“,
"supplier": {
…
}
}
Odpověď
serveru: stavový kód 200 nebo jiný při neúspěchu.
Povinné položky: login, password, supplier, company, addr_1, addr_2, postal, ic, dic, tax_payer.
3.5 Upload souboru loga dodavatele / provozovny
Velikost souboru je omezena na 2MB. Doporučené rozměry obrázku jsou 547×240 px. Povolený formát obrázku je png, jpg. Kromě binárních dat obrázku se neodesílá žádný JSON dokument.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/upload-logo.json
Metoda: PUT
Povinné parametry: login, heslo, id (provozovny).
Příklad akce:
curl
-F’login=uzivatelsky-login‘
-F’password=uzivatelske-heslo‘
-F’id=50′
-F’file=@./soubor.png‘
-X PUT
https://aplikace.vasdoklad.cz/v1/vasdoklad.cz/upload-logo.json
3.6 Upload reklamního banneru dodavatele / provozovny
Velikost souboru je omezena na 2MB. Doporučené rozměry obrázku jsou 420×120 px. Povolený formát obrázku je png, jpg. Kromě binárních dat se neodesílá žádný JSON dokument.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/upload-ad.json
Metoda: PUT
Povinné parametry: login, heslo, id (provozovny).
Příklad akce:
curl -F’login=uzivatelsky-login‘ -F’password=uzivatelske-heslo‘ -F’id=50′ -F’file=@./soubor.png‘ -X PUT https://aplikace.vasdoklad.cz/v1/vasdoklad.cz/upload-ad.json
4 Operace s adresářem Pokladen
Platí, že dodavatel / provozovna může disponovat 0 – n pokladnami (podle platného tarifu).
4.1 Získání seznamu pokladen
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/list-cashdesks.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50",
„cdid“: „58“
}
Pozn.: Atribut id reprezentuje provozovnu/dodavatele. Atribut cdid reprezentuje pokladnu. Pokud není uveden atribut cdid spolu s hodnotou, je vrácen seznam všech pokladen dodavatele/provozovny. Je-li uvedeno cdid, jsou vráceny pouze informace o konkrétní pokladně reprezentované tímto interním číslem.
Příklad odpovědi:
{
"58": {
"est_id": 50,
"eet_do": 0,
"eet_cert_path": "defined",
"eet_cert_pass": "defined",
"eet_provozovna": 14,
"eet_pokladna": "Vasdoklad.cz",
"eet_playground": 1,
"signing_cert_path": "defined",
"signing_key_path": "defined",
"signing_passwd": "defined"
}
}
4.2 Odstranění pokladny
Odstraněním pokladny dochází ke smazání všech přiřazených souborů.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-cashdesk.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "58"
}
Atribut id reprezentuje interní číslo pokladny.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
4.3 Vytvoření nové pokladny
Operace vytvoření pokladny vytváří novou neinicializovanou entitu.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/import-cashdesk.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50"
}
Atribut id reprezentuje interní číslo provozovny / dodavatele ve které má být nová pokladna vytvořena.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
4.4 Změna nastavení existující pokladny
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/update-cashdesk.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "58",
"cashdesk":{
"eet_cert_pass": "heslo-certifikatu-eet",
"eet_provozovna": "14",
"eet_pokladna": "vasdoklad.cz",
"eet_playground": true,
"eet_do": false,
"signing_passwd": "heslo-kvalifikovaneho-certifikatu"
}
}
Atribut id reprezentuje interní číslo pokladny.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
4.5 Upload EET certifikátu pokladny
Touto akcí dojde k nahrání certifikátu pro elektronickou evidenci tržeb do nastavení existující pokladny. Velikost souboru je omezena na 2MB. Povolený formát souboru je p12. Kromě binárních dat se neodesílá žádný JSON dokument.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/upload-eetcert.json
Metoda: PUT
Povinné parametry: login, heslo, id (pokladny).
Příklad akce:
curl -F’login=uzivatelsky-login‘ -F’password=uzivatelske-heslo‘ -F’id=58′ -F’file=@./soubor.p12′ -X PUT https://aplikace.vasdoklad.cz/v1/vasdoklad.cz/upload-eetcert.json
4.6 Odstranění EET certifikátu pokladny
Touto akcí dojde ke smazání souboru s certifikátem, který je přiřazen k existující pokladně.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-eetcert.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "58"
}
Atribut id reprezentuje interní číslo pokladny.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
4.7 Upload kvalifikovaného certifikátu pokladny
Kvalifikovaný certifikát slouží k elektronickému podepisování vystavovaných dokladů. Touto akcí dojde k nahrání certifikátu do nastavení existující pokladny. Velikost souboru je omezena na 2MB. Povolený formát souboru je pem. Kromě binárních dat se neodesílá žádný JSON dokument.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/upload-qcert.json
Metoda: PUT
Povinné parametry: login, heslo, id (pokladny).
Příklad akce:
curl -F’login=uzivatelsky-login‘ -F’password=uzivatelske-heslo‘ -F’id=58′ -F’file=@./soubor.pem‘ -X PUT https://aplikace.vasdoklad.cz/v1/vasdoklad.cz/upload-qcert.json
4.8 Odstranění kvalifikovaného certifikátu pokladny
Touto akcí dojde ke smazání souboru s certifikátem, který je přiřazen k existující pokladně.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-qcert.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "58"
}
Atribut id reprezentuje interní číslo pokladny.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
4.9 Upload klíče kvalifikovaného certifikátu pokladny
Klíč ke kvalifikovanému certifikátu slouží k elektronickému podepisování vystavovaných dokladů. Touto akcí dojde k nahrání klíče do nastavení existující pokladny. Velikost souboru je omezena na 2MB. Povolený formát souboru je pem. Kromě binárních dat se neodesílá žádný JSON dokument.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/upload-qkey.json
Metoda: PUT
Povinné parametry: login, heslo, id (pokladny).
Příklad akce:
curl -F’login=uzivatelsky-login‘ -F’password=uzivatelske-heslo‘ -F’id=58′ -F’file=@./soubor.pem‘ -X PUT https://aplikace.vasdoklad.cz/v1/vasdoklad.cz/upload-qkey.json
4.10 Odstranění klíče kvalifikovaného certifikátu pokladny
Touto akcí dojde ke smazání souboru s klíčem, který je přiřazen k existující pokladně.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-qkey.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "58"
}
Atribut id reprezentuje interní číslo pokladny.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
5 Operace s adresářem Odběratelů
5.1 Získání seznamu odběratelů
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/list-customers.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50"
}
Pozn.: Pokud není uveden atribut id spolu s hodnotou, je vrácen seznam všech odběratelů. Je-li uvedeno id, jsou vráceny pouze informace o konkrétním odběrateli, kterého reprezentuje toto interní číslo.
Příklad odpovědi:
{
"50": {
"company": "Spolecnost s.r.o.",
"addr_1": "Novákova 12", "addr_2": "Vy\u0161kov",
"country": "\u010cesk\u00e1 Republika",
"postal": "123 45",
"ic": "01234567",
"dic": "CZ1212121218",
"phone": "+420 910 111 426",
"email": "kontakt@it-techcz.com"
}
}
5.2 Odstranění odběratele
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/remove-customer.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"id": "50"
}
Pozn.: Parametr id je povinný.
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
5.3 Vytvoření odběratele
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/import-customer.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"customer": {
"company": "Spolecnost s.r.o.",
"addr_1": "Novákova 12",
"addr_2": "Vyškov",
"postal": "123 45",
"ic": "01234567",
"dic": "CZ1212121218",
"phone": "+420 910 111 426",
"email": "kontakt@it-techcz.com",
"country":"Česká Republika"
}
}
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
5.4 Aktualizace položky odběratele
Odběratele lze v adresáři aktualizovat stejným přístupem, jako je postup pro jeho vytvoření. Navíc je nutné uvádět v odesílaném JSON dokumentu atribut id, čímž se operace odliší od vytvoření nové položky v adresáři.
Url: https://aplikace.vasdoklad.cz/v1/basdoklad.cz/import-customer.json
Metoda: POST
Odesílaný dotaz v JSON:
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
„id“: „50“,
"customer": {
...
}
}
Odpověď serveru: stavový kód 200 při úspěchu, nebo jiný.
6 Generování dokumentu dokladu
Při generování dokladu lze volitelně uplatnit adresáře dodavatelů / provozoven, pokladen a odběratelů. Použití adresáře dodavatelů/provozoven umožňuje uplatnit vlastní logo nebo reklamu. Použití adresáře pokladen dovoluje provádět elektronickou evidenci tržeb a podepisování dokladů kvalifikovaným certifikátem.
6.1 Ukázka generování dokladu bez použití adresářů
Tento přístup nedovoluje vkládat do generovaného dokladu grafické logo, reklamu, podepisovat doklad kvalifikovaným certifikátem a provádět EET.
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"archive": true,
"explicitHeader": "",
"invoice_id": "0200100021",
"varsymbol": "358857018",
"konstsymbol": "0308",
"ordernum": "",
"orderdate": "",
"date_issue": "20.1.2020",
"date_maturity": "20.1.2020",
"date_payment_realisation_tax": "20.1.2020",
"date_payment_received": "",
"paymethod": "Hotovost",
"revcharge": false,
"currency": "CZK",
"course": "",
"payed": false,
"overview": false,
"sign_by_certificate": "",
"eet": "",
"supplier": {
"company": "Spolecnost s.r.o.",
"addr_1": "Novákova 12",
"addr_2": "Vyškov",
"postal": "123 45",
"ic": "01234567",
"dic": "CZ1212121218",
"phone": "+420 910 111 426",
"web": "https://it-techcz.com",
"email": "kontakt@it-techcz.com",
"bank_name": "",
"bank_account": "",
"bank_iban": "",
"bank_swift": "",
"tax_payer": false
},
"customer_login": "kontakt@it-techcz.com",
"customer": {
"company": "Fiktivní společnost a.s.",
"addr_1": "Na Tyršovce 13/30",
"addr_2": "Brno",
"postal": "533 51",
"country": "Czech Republic",
"ic": "05577987",
"dic": "CZ05522452",
"phone": "776351196",
"email": ""
},
"invoice_comment": "Fakturujeme Vám níže uvedené služby za období 01/2020 dle smlouvy číslo 099/16-2016 (identifikace fakturace 157101):",
"additional_comment_1": "Spolecnost s.r.o. se sídlem Novákova 12, 123 45 Pustiměř, je zapsána v obchodním rejstříku, vedeném u Krajského soudu v Brně, oddíl C, vl
ožka 95878.",
"additional_comment_2": "Dovolujeme si Vás upozornit, že v případě nedodržení data splatnosti uvedeného na faktuře Vám budeme účtovat úrok z prodlení v dohodnuté
, resp. zákonné výši",
"additional_comment_3": "a smluvní pokutu (byla-li ujednána).",
"items": [
{"subject": "Doučování českého jazyka, 1 hodina", "amount": "1", "unit_price": "300", "tax_percent": "21"},
{"subject": "Doučování českého jazyka, 1 hodina", "amount": "1", "unit_price": "200", "tax_percent": "15"}
]
}
6.2 Ukázka generování dokladu s použitím všech adresářů
Pro vystavení dokladu budou použit dodavatel id 50 z adresáře dodavatelů / provozoven a případně jeho grafické logo a reklama, dále pokladna id 8 a odběratel id 13. Je-li v adresáři pokladen u položky id 8 uvedeno platné nastavení pro EET nebo podepisování dokladů, bude použito při vystavení dokladu.
{
"login": "uzivatelsky-login",
"password": "uzivatelske-heslo",
"archive": true,
"explicitHeader": "",
"invoice_id": "0200100021",
"varsymbol": "358857018",
"konstsymbol": "0308",
"ordernum": "",
"orderdate": "",
"date_issue": "20.1.2020",
"date_maturity": "20.1.2020",
"date_payment_realisation_tax": "20.1.2020",
"date_payment_received": "",
"paymethod": "Hotovost",
"revcharge": false,
"currency": "CZK",
"course": "",
"payed": false,
"overview": false,
"sign_by_certificate": "8",
"eet": "8",
"supplier": „50“,
"customer_login": "kontakt@it-techcz.com",
"customer": „13“,
"invoice_comment": "Fakturujeme Vám níže uvedené služby za období 01/2020 dle smlouvy číslo 099/16-2016 (identifikace fakturace 157101):",
"items": [
{"subject": "Doučování českého jazyka, 1 hodina", "amount": "1", "unit_price": "300", "tax_percent": "21"},
{"subject": "Doučování českého jazyka, 1 hodina", "amount": "1", "unit_price": "200", "tax_percent": "15"}
]
}
7 Technická podpora
Ve věci implementace služby VášDoklad.cz do Vašich systémů (e-shopů a online služeb) jsme připraveni Vám poskytnout technický support. Kontaktujte nás na email kontakt@it-techcz.com nebo na telefonním čísle 910 111 426.