Usługa | Adres |
---|---|
Comarch OCR – panel do zarządzania | https://www.erp.comarch.pl/OCR/ |
Comarch OCR - API | https://cr.erp.comarch.pl/api/v1/ |
W pierwszym kroku należy zalogować się w aplikacji Comarch OCR i wygenerować klucze dostępowe.
Metody
Tworzenie sesji użytkownika „session” (POST)
Adres: https://cr.erp.comarch.pl/api/v1/session
W nagłówku zapytania należy dołączyć następujące dane uwierzytelniające:
Klucz | Wartość |
---|---|
authKey | Klucz wygenerowany w panelu do zarządzania Comarch OCR |
authSecret | Sekret wygenerowany w panelu do zarządzania Comarch OCR |
Opis struktury JSON odpowiedzi
Property | Opis |
---|---|
sessionToken | Token sesji |
Przykładowa odpowiedź JSON
{
"sessionToken": "00000000-0000-0000-0000-000000000000""
}
Możliwe kody odpowiedzi HTTP:
Kod | Znaczenie |
---|---|
200 | Poprawnie wygenerowano token sesji. |
400 | Brak wymaganych parametrów w nagłówku żądania lub błędne dane. |
403 | Wymagane jest użycie SSL |
Usuwanie sesji użytkownika „session” (DELETE)
Adres: https://cr.erp.comarch.pl/api/v1/session
W nagłówku zapytania należy dołączyć następujące wartości:
Klucz | Wartość |
---|---|
authToken | Token sesji |
Kod | Znaczenie |
---|---|
204 | Sesja poprawnie zakończona |
400 | Brak tokenu sesji w nagłówku żądania. |
403 | Wymagane jest użycie SSL |
Adres: https://cr.erp.comarch.pl/api/v1/invoice/recognize
Opis struktury JSON zapytania
Property | Opis |
---|---|
File | Plik o rozszerzeniu *.jpg, *.png, *bmp lub *.pdf w postaci binarnej |
Guid | Opcjonalne - GUID |
RecognizeConfiguration.RecognitionLanguage | Opcjonalny - język rozpoznawania dokumentu, 0 - j. polski (jeśli na fakturze zostanie rozpoznany język angielski, rozpoznanie nastąpi jak dla faktur angielskich), 1 - j. niemiecki, 2 - j. francuski, 3 - j. angielski -1 – rozpoznanie na podstawie języka wykrytego na dokumencie (domyślnie - j. polski) |
RecognizeConfiguration.ReturnData | Opcjonalny - informacja czy usługa ma w odpowiedzi odesłać pliki dla przetworzonych dokumentów 0 – bez plików 1 – z plikami (domyślnie – opcja 0) |
RecognizeConfiguration.BarCodeRecognition | Opcjonalny - informacja czy należy rozpoznawać kody kreskowe da dokumentach, 0 - nie rozpoznaje kodów 1 - rozpoznaje kody 2 - łączy strony na podstawie rozpoznanych kodów (domyślnie – opcja 0) |
RecognizeConfiguration.MergingPagesOption | Opcjonalny - informacja czy należy rozpoznawać kody kreskowe da dokumentach, 0 - nie rozpoznaje kodów 1 - rozpoznaje kody 2 - łączy strony na podstawie rozpoznanych kodów (domyślnie – opcja 0) |
RecognizeConfiguration.ReturnDocumentPositions | Opcjonalny – czy na rozpoznanych dokumentach mają być zwrócone poszczególne pozycje z tabeli produktów 0 – bez pozycji 1 – z pozycjami (domyślnie – opcja 0) |
RecognizeConfiguration.PaymentMethodMapping | Opcjonalny – czy na rozpoznanych dokumentach metoda płatności ma być mapowana do standardowych form płatności czy odczytana zgodnie z treścią na dokumencie 0 – bez mapowania 1 – z mapowaniem (domyślnie – opcja 0) |
RecognizeConfiguration.RawRecognitionText | Opcjonalny – informacja czy ma zostać zwrócona oryginalna, niezmieniona treść wykryta na stronie 0 - brak oryginalnej treści 1 - oryginalna treść zostanie zwrócona (domyślnie – opcja 0) |
RecognizeConfiguration.DefaultPaymentForm | Opcjonalny – domyślna forma płatności jaka ma zostać zwrócona w przypadku nie wykrycia formy płatności na dokumencie (np. „gotówka”) (domyślnie – brak) |
RecognizeConfiguration.PagesToRecognize | Opcjonalny – informacja o numerze NIP kontrahenta który wysyła dokument (np. "1234567890") (domyślnie – brak) |
RecognizeConfiguration.DateRange | Opcjonalny – informacja jakie daty na dokumencie mają zostać uwzględnione w rozpoznaniu (np. "1.01.2023-31.12.2023") (domyślnie – brak) |
RecognizeConfiguration.RegisterType | Opcjonalny – typ rejestru, który ma być uwzględniony przy rozpoznaniu 0 – rejestr zakupu 1 – rejestr sprzedaży (domyślnie – rejestr zakupu) |
W nagłówku zapytania należy dołączyć następujące wartości:
Klucz | Wartość |
---|---|
authToken | Token sesji |
Schemat zapytania (request body):
Parametr | File to recognize |
---|---|
File string($binary) | |
Guid string | |
ErpModule string | |
RecognizeConfiguration.RegisterType integer($int32) | 1 = Purchase 2 = Sale |
RecognizeConfiguration.RecognitionLanguage integer($int32) | 0 = PL 1 = DE 2 = FR 3 = EN -1 = UNSET |
RecognizeConfiguration.ReturnData integer($int32) | 0 = WithoutData 1 = WithData |
RecognizeConfiguration.BarCodeRecognition integer($int32) | 0 = NoRecognition 1 = CodeRecognition 2 = DocumentBundleRecognition |
RecognizeConfiguration.MergingPagesOption integer($int32) | 0 = MergingAlgorithm 1 = FileIsOneDocument |
RecognizeConfiguration.ReturnDocumentPositions integer($int32) | 0 = WithPositions 1 = WithoutPositions |
RecognizeConfiguration.PaymentMethodMapping integer($int32) | 0 = WithoutMapping 1 = WithMapping |
RecognizeConfiguration.RawRecognitionText integer($int32) | 0 = WithoutRawRecognitionText 1 = WithRawRecognitionText |
RecognizeConfiguration.DefaultPaymentForm string | |
RecognizeConfiguration.PagesToRecognize string | |
RecognizeConfiguration.ConfigurationNipNumber string | |
RecognizeConfiguration.DateRange string |
Opis struktury JSON odpowiedzi
Property | Opis |
---|---|
ExportString | Odpowiedź w formacie JSON |
Message | Komunikat o wyniku przetwarzania dokumentu przez usługę |
Code | Kod odpowiedzi |
Status | Status odpowiedzi |
AdditionalMessage | Dodatkowa informacja o pozostałych dokumentach, gdy w pakiecie pozostało 10 lub mniej dokumentów |
UriToDownload | Adres URL do strony spójnej z kodem odpowiedzi |
Schemat odpowiedzi
Kod 200
{ "invoices": [ { "recognizedElements": { "documentNumber": "string", "kSeFNumber": "string", "dateOfIssue": "string", "dateOfSale": "string", "dueDate": "string", "paymentForm": "string", "bankAccountNumber": "string", "orderNumber": "string", "isCorrection": true, "correctedDocumentNumber": "string", "currency": "string", "currencyExchange": { "rate": 0, "multiplier": 0, "date": "string" }, "language": "string", "carBodyNumber": "string", "isDateInRange": true }, "sellerContractor": { "tin": "string", "companyName": "string", "street": "string", "streetNumber": "string", "apartmentsNumber": "string", "postCode": "string", "postOffice": "string", "city": "string", "voivodeship": "string", "activeVATTaxpayer": true }, "buyerContractor": { "tin": "string", "companyName": "string", "street": "string", "streetNumber": "string", "apartmentsNumber": "string", "postCode": "string", "postOffice": "string", "city": "string", "voivodeship": "string", "activeVATTaxpayer": true }, "vatPositions": [ { "vatRate": 0, "vatRateDecimal": 0, "vatStatus": 0, "subtotal": 0, "vat": 0, "total": 0 } ], "pageProperties": { "firstPageNumber": 0, "documentLength": 0, "pageRotation": 0 }, "pages": [ { "pageNumber": 0, "image": "string", "rawText": "string" } ], "productItems": [ { "name": "string", "unit": "string", "productCode": "string", "ean": "string", "contractNumber": "string", "count": { "value": 0, "status": 0 }, "nettoUnitPrice": { "value": 0, "status": 0 }, "bruttoUnitPrice": { "value": 0, "status": 0 }, "netto": { "value": 0, "status": 0 }, "brutto": { "value": 0, "status": 0 }, "vatRate": { "value": 0, "status": 0 }, "vatAmount": { "value": 0, "status": 0 }, "vatStatus": { "value": 0, "status": 0 }, "discount": { "value": 0, "status": 0 } } ], "attachment": { "canRead": true, "canWrite": true, "canSeek": true, "canTimeout": true, "length": 0, "position": 0, "readTimeout": 0, "writeTimeout": 0 }, "fileUrl": "string", "barcode": { "text": "string", "type": "string" }, "barcodes": [ { "text": "string", "type": "string" } ], "guid": "string" } ], "message": "string", "url": "string", "numberOfPagesLeft": 0, "guid": "string" }
Kod 400
{ "httpCode": 0, "internalErrorCode": 0, "message": "string", "url": "string" }
Kod 403
{ "httpCode": 0, "internalErrorCode": 0, "message": "string", "url": "string" }
Kod 415
{ "httpCode": 0, "internalErrorCode": 0, "message": "string", "url": "string" }
Tabela błędów metody „invoice/recognize” w przypadku kodu błędu >= 400
HttpCode | InternalErrorCode | Opis | Dodatkowe informacje |
---|---|---|---|
401 | 101 | Błąd podczas autentykacji użytkownika | |
401 | 102 | Niepoprawny numer klucza | |
503 | 104 | Przerwa techniczna | |
401 | 105 | Token sesji wygasł lub jest niepoprawny | |
401 | 106 | Brak podpisanej klauzuli RODO | Link do formularza z umową w 'Url' |
402 | 107 | Brak wykupionego pakietu przez klienta | |
401 | 108 | Klient został zablokowany ze względu na brak opłaconego pakietu | |
401 | 109 | Brak dostępu do API OCR (autentykacja przez token) | |
401 | 110 | Wykorzystany pakiet dokumentów | Link do sklepu w 'Url' |
401 | 111 | Brak wystarczającej liczby dokumentów w pakiecie | Link do sklepu w 'Url' |
500 | 112-116,199 | Błędy po stronie serwera | |
401 | 117 | Błąd podczas autentykacji użytkownika z wykorzystaniem NIPu | |
503 | 118 | Przerwa serwisowa | |
400 | 119 | Niepoprawny parametr | Nazwa parametru w 'Message' |
401 | 101 | Błąd podczas autentykacji użytkownika | |
401 | 102 | Niepoprawny numer klucza | |
503 | 104 | Przerwa techniczna | |
401 | 105 | Token sesji wygasł lub jest niepoprawny |
W przypadku odpowiedzi z serwera z Code innym niż wymienione w tabeli powyżej należy wyświetlić informację zgodnie ze Statusem.
Komunikat tej informacji znajduje się w Message lub AdditionalMessage, i ewentualny link w UriToDownload.