Evidoo API

API pro správu a zpracování dokumentů v systému Evidoo. Přístup k API je chráněn pomocí Bearer tokenu, který naleznete ve svém profilu.

API token

Pro zobrazení Vašeho tokenu je nutné se přihlásit. Přihlásit se

Autorizace

Každý požadavek na API musí obsahovat hlavičku `Authorization` s platným tokenem:

`Authorization: Bearer <váš_token>`

Všechny endpointy jsou verzované a dostupné pod prefixem `/v1/api/`.

Zpracování dokumentů

Tato sekce se věnuje nahrávání, kontrole a správě souborů.

Upload souborů

[POST] /v1/api/file/upload

Slouží k nahrání jednoho nebo více souborů ke zpracování.

Request

+ Parameters
    + `files` (array, required) - Pole jednoho nebo více souborů určených k nahrání. Každá položka v poli musí být soubor odeslaný jako součást multipart/form-data požadavku. Pro správné zpracování by měl každý soubor obsahovat svůj původní název a MIME typ (např. application/pdf).
        - Maximální počet souborů: 10
        - Maximální velikost jednoho souboru: 25 MB
        - Povolené MIME typy: application/pdf, image/jpeg, image/png, DOCX, XLSX, CSV
    + `hook` (string, required) - URL adresa, na kterou bude po dokončení zpracování odeslán POST požadavek s informacemi o výsledku.

    Příklad CURL:
    curl --location --request POST 'https://www.evidoo.cz/v1/api/file/upload' \
    --header 'Authorization: Bearer VÁŠ_BEARER_TOKEN' \
    --header 'Accept: application/json' \
    --form 'files[0]=@"/cesta/k/souboru/faktura.pdf"' \
    --form 'hook="https://vas-webhook.url/endpoint"'

Response 200 (application/json)

Odpověď serveru

{
    "status": 200,
    "payload": {
        "files": {
            "list": [
                {
                    "id": "1shp17",
                    "parent_id": null,
                    "originalFileName": "I3XCOY59014.pdf",
                    "supplierId": null,
                    "supplierName": null,
                    "fileName": "EV_68790256879a6742278220.pdf",
                    "fileType": "invoice",
                    "type": "application/pdf",
                    "commodity": [
                        "service"
                    ],
                    "size": 1015955,
                    "name": "Název dokumentu",
                    "note": null,
                    "status": 400,
                    "icon": {
                        "icon": "other",
                        "color": "#333333"
                    },
                    "createdDt": 1752760918000,
                    "priceExcludingVat": 1623,
                    "price": 2000,
                    "currency": "CZK",
                    "property": [],
                    "group": []
                }
            ]
        }
    }
}

Kontrola stavu souborů

[GET] /v1/api/file/check/{ids}

Umožňuje zkontrolovat stav zpracování jednoho nebo více souborů na základě jejich ID. ID souborů se vkládají do URL a oddělují se čárkou.

Request

+ Parameters
    + ids (string, required) - ID souborů oddělené čárkou (např. `xxx,yyy`).

Response 200 (application/json)

Struktura odpovědi je stejná jako u uploadu. Pokud je soubor rozdělen (status = 100), v odpovědi se objeví nové soubory, které mají parent_id odkazující na původní dokument.

{
    "status": 200,
    "payload": {
        "files": {
            "list": [
                {
                    "id": "1shp17",
                    "parent_id": null,
                    "originalFileName": "I3XCOY59014.pdf",
                    "supplierId": null,
                    "supplierName": null,
                    "fileName": "EV_68790256879a6742278220.pdf",
                    "fileType": "invoice",
                    "type": "application/pdf",
                    "commodity": [
                        "service"
                    ],
                    "size": 1015955,
                    "name": "Původní dokument",
                    "note": null,
                    "status": 100,
                    "icon": {
                        "icon": "other",
                        "color": "#333333"
                    },
                    "createdDt": 1752760918000,
                    "priceExcludingVat": 1623,
                    "price": 2000,
                    "currency": "CZK",
                    "property": [],
                    "group": []
                },
                {
                    "id": "2newid",
                    "parent_id": "1shp17",
                    "originalFileName": "I3XCOY59014.pdf",
                    "supplierId": null,
                    "supplierName": null,
                    "fileName": "EV_part1_68790256879a6742278220.pdf",
                    "fileType": "invoice",
                    "type": "application/pdf",
                    "commodity": [
                        "service"
                    ],
                    "size": 501342,
                    "name": "Rozdělený dokument 1",
                    "note": null,
                    "status": 200,
                    "icon": {
                        "icon": "other",
                        "color": "#333333"
                    },
                    "createdDt": 1752760919000,
                    "priceExcludingVat": 800,
                    "price": 1000,
                    "currency": "CZK",
                    "property": [],
                    "group": []
                }
            ]
        }
    }
}

Seznam zpracovaných souborů

[GET] /v1/api/file/list

Vrací seznam souborů s možností filtrování a stránkování. V tomto seznamu se nezobrazují původní rozdělené soubory se statusem 100.

Request

+ Parameters (všechny jsou nepovinné )
    + `page` (number, optional) - Číslo stránky, výchozí je `1`.
    + `limit` (number, optional) - Počet položek na stránku. Výchozí i maximální hodnota je `50`.
    + `search` (string, optional) - Text pro vyhledávání.
    + `sort` (string, optional) - Řazení výsledků (např. `createdDt DESC`).
    + `type` (string, optional) - Filtrování podle typu dokumentu z `filterOptions.type`.
    + `propertyIds` (string, optional) - ID nemovitostí oddělené čárkou z `filterOptions.property`.
    + `groupIds` (string, optional) - ID skupin oddělené čárkou z `filterOptions.group`.

Response 200 (application/json)

{
    "status": 200,
    "payload": {
        "files": {
            "list": [
                {
                    "id": "1shp17",
                    "parent_id": null,
                    "originalFileName": "I3XCOY59014.pdf",
                    "supplierId": null,
                    "supplierName": null,
                    "fileName": "EV_68790256879a6742278220.pdf",
                    "fileType": "invoice",
                    "type": "application/pdf",
                    "commodity": ["service"],
                    "size": 1015955,
                    "name": "Název dokumentu",
                    "note": "Chyba při zpracování",
                    "status": 400,
                    "icon": { "icon": "other", "color": "#333333" },
                    "createdDt": 1752760918000,
                    "priceExcludingVat": 1623,
                    "price": 2000,
                    "currency": "CZK",
                    "property": [],
                    "group": []
                }
            ],
            "filter": {
                "from": null,
                "to": null,
                "search": null,
                "status": null,
                "type": null,
                "sort": ["createdDt", "DESC"],
                "propertyIds": "",
                "groupIds": ""
            },
            "pagination": {
                "page": 1,
                "limit": 50,
                "count": 43
            },
            "filterOptions": {
                "type": [
                    "energy_invoice",
                    "accounting_document",
                    "price_list",
                    "power_of_attorney",
                    "lease_agreement",
                    "handover_protocol",
                    "contract_addendum",
                    "terms_and_conditions",
                    "purchase_agreement",
                    "checklist",
                    "hoa_billing",
                    "bank_statement",
                    "death_certificate",
                    "contract_termination",
                    "other",
                    "electricity_contract",
                    "gas_contract",
                    "statement_of_contract_details",
                    "advance_payment_schedule",
                    "contractual_penalty",
                    "identity_card",
                    "marriage_certificate",
                    "parking",
                    "instruction_on_contract_withdrawal",
                    "insurance_contract",
                    "land_register_extract",
                    "purchase_agreement_real_estate",
                    "donation_agreement_real_estate",
                    "purchase_agreement_car"
                ],
                "property": [
                    { "id": "68g4k", "name": "Dům Liberecká", "icon": { "icon": "apartment", "color": "#007bff" } },
                    { "id": "4csm3", "name": "Dům Na Výšině", "icon": { "icon": "apartment", "color": "#007bff" } },
                    { "id": "2h53m", "name": "Můj byt č. 5", "icon": { "icon": "residential", "color": "#985d90" } }
                ],
                "group": [
                    { "id": "2h53m", "name": "MSFA", "icon": { "icon": "0", "color": "#db0000" } }
                ]
            }
        }
    }
}

Detail souboru

[GET] /v1/api/file/get/{id}

Získá kompletní detailní informace o konkrétním souboru.

Request

+ Parameters
    + `id` (string, required) - ID dokumentu.

Response 200 (application/json)

Odpověď obsahuje securityHash pro stažení/zobrazení. fileData.data má pro každý typ dokumentu jinou strukturu.

{
    "status": 200,
    "payload": {
        "file": {
            "id": "c8cbnn",
            "cdnId": "lhl5",
            "supplierId": "126jul",
            "supplierName": "Firma s.r.o.",
            "originalFileName": "resized_img_33t406e3ff6p1hlHaji.webp",
            "fileName": "EV_68a17cf336705495728213.webp",
            "shareType": null,
            "fileType": "ucetni_doklad",
            "mimeType": "image/webp",
            "commodity": ["sluzba"],
            "size": 126408,
            "name": "🧾 Účtenka za služby",
            "note": null,
            "status": 200,
            "createdDt": 1755413747000,
            "removedDt": null,
            "icon": {
                "icon": "ucetni_doklad",
                "color": "#8338EC"
            },
            "securityHash": "WFZvdVZ0b3JPMEIwMHgrS1FiOG4wSmJlVmYzVWx6RUU2SXVVVm56S2c1ditGQkZobTI5Ry9uWng0RVloMWZUSGhaFZHTGFlZXVScGhjRTNCQXBKQnc9PQ==",
            "fileData": {
                "classification": {
                    "id": "6yjcty",
                    "note": null,
                    "data": {}
                },
                "data": {
                    "id": "6yjcty",
                    "note": null,
                    "data": {}
                },
                "amendment":  {
                    "id": "6yjcty",
                    "note": null,
                    "data": {
                        "file_name": "name_of_file",
                        "content": "<html>content</html>"    
                    }
                }
            },
            "additionalPrompt": [
                {
                    "id": "6yjcty",
                    "prompt": "zaslaný požadavek",
                    "status": 4,
                    "createdDt": 1755413747000
                }
            ],
            "property": [
                {
                    "id": "2d5voe",
                    "propertyId": "2h53m", 
                    "role": 1, 
                    "name": "Byt č. 5"
                },
                { 
                    "id": "2f1j6v", 
                    "propertyId": "68g4k", 
                    "role": 1, 
                    "name": "Dům Liberecká"
                }
            ],
            "group": [
                { 
                    "id": "fmpox", 
                    "groupId": "2h53m", 
                    "role": 1, 
                    "name": "Název skupiny"
                }
            ],
            "hierarchy": [
                { 
                    "id": "fmpox", 
                    "groupHierarchyId": "2h53m", 
                    "role": 1, 
                    "name": "Název hierarchické skupiny"
                }
            ],
            "user": [],
            "chat": [
                {
                    "id": "l9o8c",
                    "parentId": null,
                    "fileId": "ak7f8j",
                    "userId": "2h53m",
                    "message": "Zpráva ostatním uživatelů, kteří vidí dokument",
                    "createdDt": 1755685785000,
                    "user": {
                        "id": "2h53m",
                        "firstName": "Jan",
                        "lastName": "Pabyska",
                        "nickName": "JP",
                        "email": "jan@pabyska.cz"
                    }
                }
            ]
        }
    }
}

Stažení souboru

[GET] /v1/api/file/download/{securityHash}

Umožní stáhnout fyzický soubor na základě jeho securityHash.

Request

+ Parameters
    + `securityHash` (string, required) - Bezpečnostní hash získaný z detailu souboru.

Response 200

Vrací přímo soubor ke stažení.

Zobrazení souboru

[GET] /v1/api/file/display/{securityHash}

Zobrazí soubor v prohlížeči (pokud to typ souboru umožňuje).

Request

+ Parameters
    + `securityHash` (string, required) - Bezpečnostní hash získaný z detailu souboru.

Response 200

Zobrazí obsah souboru.

Smazání souboru

[DELETE] /v1/api/file/delete/{id}

Smaže dokument na základě jeho ID.

Request

+ Parameters
    + `id` (string, required) - ID dokumentu ke smazání.

Response 200 (application/json)

Odpověď má stejnou strukturu jako `/v1/api/file/check/list`.