Prihlásenie pomocou emailu a hesla
Pre prihlásenie pomocou emailu využívajte Váš účet alebo nový účet. Heslo musí byť zahešované už na strane klienta šifrou SHA256
. Email a hash hesla sú súčasťou requestu.
POST /user/login
Headers
Content-Type: application/json
Request
{
"email": "sample@email.org",
"password": "29500ac16fcdea35efd35be91d8463fd8bdfa2f2a012955067266db03e46e4dd"
}
Prihlásenie pomocou tokenu
Token si môžete vytvoriť pomocou Web aplikácie, alebo požiadať nás emailom na api@docflow.ai.
V requeste potom posielajte doplnkové informácie o zariadení, skripte alebo systéme pre lepšiu identifikáciu.
POST /user/login-by-token
Headers
Content-Type: application/json
Token: 1b722135f1c7d677802f487c73c3000ae8313986
Request
{
"id": "a63a6ab1ef11b3b1021a9a6",
"type": "phone",
"model": "iPhone 13 Pro",
"vendor": "Apple",
"ip": "X.X.X.X"
}
Odpoveď
Odpoveď je pre oba spôsoby prihlásenia rovnaká. Nižšie je popísaná základná štruktúra.
{
"success": true,
"user": {
"_id": ObjectID,
"email": string,
"name": string,
"phone": string,
"currentOwnerId": ObjectID,
"currentOwnerName": string,
"currentOwnerIban": string,
"currentOwnerMailbox": string,
"owners": {"_id": ObjectID, "name": string, "role": ["admin", "editor", "viewer"]},
...
}
}
Verejné info dokumentu
Tento endpoint je verejný a slúži len rýchle overenie existencie dokumentu a získanie ID vlastníka (projektu / firmy). Endpoint nepotrebuje prihlásenie.
GET /document/info/<id:ObjectID>
Response
{
"id": ObjectID,
"ownerId": ObjectID
}
Detail dokumentu
GET /document/<id:ObjectID>
Response
{
"id": ObjectID, # ID dokumentu
"name": string, # meno dokumentu
"userId": ObjectID, # ID pridelenej osoby
"ownerId": ObjectID, # ID vlastníka (projektu / firmy)
"doctype": string, # typ dokumentu (kategória)
"type": [...], # zoznam typov suborov
"step": number, # číslo kroku vo workflow
"paid": bool, # príznak uhradenia
...
"predicted": bool, # príznak či prebehla predikcia
"predictions": [...], # zoznam predikcií podla typu
"fields": [...], # zoznam vyťažených a skontrolovaných údajov
"pages": [...], # zoznam stránok s rozmermi, veľkosťou, typom, ocr a url na obrázok
...
"createdAt": DATE, # dátum vytvorenia
"updatedAt": DATE, # dátum poslednej zmeny
"cachedAt": DATE,
...
}
Zoznam dokumentov
POST /documents/
Request
{
"sizePerPage": number, # počet záznamov na stránku
"page": number, # číslo stránky
"sortField": string, # zoradenie poľa, napríklad "fields.issueDate"
"sortOrder": number, # zoradenie smer (asc=1, desc=-1)
"filters": objekt, # viac v sekcii Filtrovanie
"q": string, # textová hodnota pre fulltext vyhľadávanie
}
Zoznam ID dokumentov
POST /documents/ids
Response
{
"total": number, # počet vyhovujúcich dokumentov
"data": [ObjectID, ObjectID, ...], # ID dokumentov
}
Filtrovanie
Filtrovať zoznam dokumentov je možné pomocou nasledovných spôsobov a údajov:
- Fulltextu - použitie argumentu
q
- Parametrických filtrov - použitie argumentu
filters
{
"filters": {
"createdAtFrom": DATE, # najbežnejšie dátumové filtre sú v roote
"createdAtTo": DATE,
"updatedAtFrom": DATE,
"updatedAtTo": DATE,
"taxDateFrom": DATE,
"taxDateTo": DATE,
"workflow": { # filktrovanie cez číslo kroku vo workflow
"incomingInvoice": [-1],
"receipt": [1,2,3,4,5,6, ...] # zoznam krokov pre konkrétny doctype
},
"doctype": ["incomingInvoice", ...], # filtrovanie cez doctype
"fields.issueDate": { # alebo použitie parametrov - údajov, ktoré sú vyťažené
"operation": "between",
"value": [DATE, DATE],
},
"fields.supplierId": {
"operation": "in",
"value": [string, ...],
}
}
}
Zoznam projektov
Zoznam projektov/firiem, ktoré má používateľ k dispozícii
GET /owners
Response
[
{
"_id": string, # ID projektu
"companyId": string, # IČO
"companyName": string (nepovinné), # Oficiálny názov projektu
"emailDocsSplit": bool, # príznak, či budú nahraté dokumenty rozdelené na jednotlivé strany
"iban": [
{
"iban": string, # IBAN
"name": string # názov účtu
},
...
],
"mailbox": string, # emailová schránka
"name": string, # názov projektu
"taxID": string (nepovinné), # DIČ
"totalDocumentCount": number, # počet dokumentov
"type": string, # typ platcu dph (prázdne ak nie je platca)
"vatId": string (nepovinné) # IČ DPH
},
...
]
Zmena projektu
Bežne budete potrebovať zmenit vlastníka (projekt / firmu), s ktoru cez API pracujete.
POST /user/change-owner
Request
{
"id": "a63a6ab1ef11b3b1021a9a2",
}
Response
{
"_id": ObjectID,
"email": string,
"name": string,
"phone": string,
"currentOwnerId": ObjectID,
"currentOwnerName": string,
"currentOwnerIban": string,
"currentOwnerMailbox": string,
"owners": {"_id": ObjectID, "name": string, "role": ["admin", "editor", "viewer"]},
...
}
Zoznam typov dokumentov
Typy dokumentu sú vlastne kategórie - priečinky. Každá kategória má vlastné nastavenie parametrov (fields), interného čísla a AI modelu.
GET /doctypes
Response
{
"id": string, # systémové ID typu dokumentu (napríklad "incomingInvoice")
"name": string, # názov typu dokumentu (kategórie)
"short": string, # skratka kategórie
"year": number, # počet znakov pre rok v internom čísle
"number": number, # počet znakov pre číslo v internom čísle
"documentsCount": number, # počet dokumentov v kategórii
"currentOwnerIban": string,
"currentOwnerMailbox": string,
"fields": [
{
"id": string, # ID použitého fieldu (parametra)
"required": bool, # príznak či má byť požadovaný
"validation": bool, # príznak či má byť validovaný
"invisible": bool, # príznak či má byť skrytý
"default": string # defaultná hodnota
},
...
],
...
}
Stiahnutie digitálneho PDF súboru
Pre získanie vygenerovaného PDF kompletného dokumentu so všetkými stranami a metadátami vyťažených údajov môžete použit nasledovný request.
Pre zobrazenie dokumentu vrátane metadát môžete použit náš Metadata reader
GET /document/download/<id:ObjectID>
Response tvorí potom telo PDF dokumentu s príslušnými hlavičkami na stiahnutie dokumentu. Vygenerovanie PDF môže trvať niekoľko sekúnd. Záleží od počtu stránok.
Zoznam workflow
Pre každý typ dokumentu môžete mať nastavený Váš workflow. Ku získaniu jeho krokov použite tento endpoint. Response obsahuje aj jeden špeciálny krok _
, ktorý sa používa pri dokumentoch, ktoré ešte nemajú určený typ.
Zoznam krokov sa potom nachádza v poli steps
a tvoria ho JSON objekty. Číslo kroku je potom offsetom objektu v rámci poľa, teda číslované od 0.
Pre archivované a zamknuté dokumenty sa používa číslo kroku -1
.
GET /workflow
Response
{
_: { # krok pre dokumenty bez typu
"name": string,
"steps": [...]
},
string: { # doctype ID kroku
"name": string, # systémové ID typu dokumentu (napríklad "incomingInvoice")
"steps": [ # zoznam krokov
{ # krok číslo 0
"assign": ObjectID, # ID zodpovednej osoby
"name": string, # názov kroku
"description": string, # popis kroku
"bulk": bool # príznak či je možné použiť hromadnú akciu na tento krok
},
{ # krok číslo 1
"assign": ObjectID,
"name": string,
"description": string,
"bulk": bool
},
{ # krok číslo 2
"assign": ObjectID,
"name": string,
"description": string,
"bulk": bool
},
...
],
}
...
}
Vytvorenie nového modelu
Pre rôzne typy dokumentov, pre rôzne firmy, projekty či zákazníkov budete potrebovať vlastný model. Pre vytvorenie nového použite tento endpoint.
Každý model musí byť identifikovaný vašim unikátnym ID modelu (string) a taktiež potrebujete špecifikovať, ktoré parametre (fieldy/položky) bude model vyťažovať.
Zoznam všetkých povolených naájete tu. Ak potrebujete pridať nový, kontaktujte nás.
POST /extractor/model/<id:string>
Request
{
"name": string, # vaše pomenovanie modelu pre lepšiu prehľadnosť
"fields": ["invoiceNumber", "issueDate", "totalAmount", "paymentVS", "supplierId"] # zoznam fieldov, ktoré model bude vyťažovať
}
Response
{
"success": bool,
"id": string
}
Informácie o modeli
Po vytvorení modelu možete o ňom získať podrobnejšie informácie o. Dôležité pre Vás môžu byť informácie o učení. teda kedy naposledy bol model pretrénovaný, na akej vzorke, s akou úspešnosťou.
GET /extractor/model/<id:string>
Response
{
"id": string, # vaše ID modelu
"modelId": ObjectID, # naše ID modelu
"fields": ["invoiceNumber", "issueDate", "totalAmount", "paymentVS", "supplierId", ...] # zoznam fieldov, ktoré model vyťažuje
"totalDocs": number, # počet dokumentov
"processDocs": number, # počet dokumentoch vhodných a použitých pre trénovanie
"datasetProcessingTime": float, # dĺžka prípravy dát pre tréning v sekundách
"trainingTime": float, # dĺžka tréningu v sekundách
"trainedAt": DATE, # dátum a čas natrénovania
"accuracy": float, # úspešnosť (0-1)
"loss": float, # strata (0-1)
}
Zoznam modelov
Pre získanie zoznamu Vašich modelov slúži tento endpoint.
GET /extractor/models
Response
[
{
"id": string, # vaše ID modelu
"name": string, # vaše pomenovanie
},
...
]
Nahratie dokumetu
V tomto prípade funguje nahrávanie tak, že pošlete telo dokumentu ako binárny súbor.
Povolené typy dokumentov (content-type) sú application/pdf
, image/png
, image/jpg
, image/jpeg
, image/git
, image/ttif
.
V prípade PDF súboru, je súbor rozdelený na samostatné stránky, ktoré tvoria ucelený dokument.
POST /extractor/model/<id:string>/upload
Response
{
"success": bool,
"id": ObjectId, # ID nového dokumentu
"modelId": string, # vaše ID modelu
}
Získanie údajov dokumentu
Bežne budete potrebovať zmenit vlastníka (projekt / firmu), s ktoru cez API pracujete.
GET /extractor/doc/<id:ObjectId>
Response
{
"success": bool,
"id": ObjectId, # ID dokumentu
"modelId": string, # vaše ID modelu
"name": string, # automaticky generovaný názov dokumentu
"fields": [
{
"id": string, # ID fieldu (parametra)
"value": string, # vyťažená hodnota
"verified": bool, # príznak či hodnota bola verifikovaná človenok
"accuracy": float, # presnosť (0-1)
"bboxIds": [string, string, ...] # formát pageId-wordId (pageId: ObjectId = ID stránky, wordId: number = číslo slova z OCR)
},
...
],
"pages": [...], # zoznam stránok s rozmermi, veľkosťou, typom, ocr a url na obrázok
}