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`.