{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"84991dcb-2b64-4cc8-ad27-264d5bf08064","name":"KT-Plus REST API","description":"Dokumentacja REST API dla systemu KT-Plus\n\n# Ważne zasady i ograniczenia\n\n- Korzystanie z API dla uzyskanego tokena może się odbywać wyłącznie synchronicznie. Oznacza to, że nie można wykonać kolejnego wywołania przed zakończeniem wcześniejszego.\n    \n\n# Statusy odpowiedzi HTTP\n\nSerwer zwraca statusy HTTP zgodne z ogólnie przyjętymi zasadami. Szczególną uwagę należy zwrócić na statusy:\n\n- `400 Bad Request` - gdy przekazane dane nie mogą być poprawnie zinterpretowane np. brak niezbędnej danej.\n    \n    - Bład zgłaszany w przypadku gdy nie znaleziono dokumentu o zadanym id z komunikatem `Obiekt nie istnieje`.\n        \n- `403 Forbidden` - dostęp do zasobu zabroniony, zazwyczaj z powodu podania nieprawidłowego tokena.\n    \n- `500 Internal Server Error` - błąd zgłaszany gdy wystąpi wyjątek w kodzie bazowym KT-Plus. Należy zapoznać się z treścią komunikatu błędu.\n    \n\n# Format danych i parametrów\n\n## Data i czas\n\nFormat daty dla parametrów wywołań jest następujący: `rrrr-mm-dd`.  \nW wypadku struktury JSON data i czas są kodowane w formacie ISO 8601. Przykład: `\"2020-03-09T22:18:26.625Z\"`.\n\n# Format zwracanych danych\n\nO ile nie jest to zaznaczone, to dane zwracane są w formacie JSON.  \nW wypadku zapytania o listę dokumentów, kontrahentów, produktów lub innych dane mają następującą postać:\n\n```\n{ \"nazwa_tabeli\": {\n    \"fields\": [\n        {\n            \"FieldName\": \"POLE1\",\n            \"DisplayLabel\": \"Opis pola 1\",\n            \"Visible\": false\n        },\n        {\n            \"FieldName\": \"POLE2\",\n            \"DisplayLabel\": \"Opis pola 2\",\n            \"Visible\": true\n        }\n    ],\n    \"records\": [\n        {\n            \"POLE1\": 11,\n            \"POLE2\": \"dana tekstowa\"\n        },\n        {\n            \"POLE1\": 22,\n            \"POLE2\": \"dana tekstowa 22\"\n        }\n    ]\n}   }\n\n ```\n\n- Tablica `fields` zawiera metadane opisujące dane. Można skorzystać z pola `DisplayLabel` aby mieć jego opis zgodny z KT-Plus. Na `Visible` nie zwracać specjalnej uwagi.\n    \n- Tablica `records` zawiera dane dla zadanego zapytania.\n    \n\nW wypadku pobierania dokumentu (np. WZ, faktura) struktura zwrócona przez serwer może zawierać wiele tabel, które będą zawierać powiązane ze sobą dane np. nagłowek dokumentu, jego pozycje oraz historię zmian.\n\n# Wykonywanie operacji modyfikacji danych\n\n## Format danych dla modyfikacji\n\nDane należy przekazywać jako JSON.\n\n```\n{\n    \"nazwa_tabeli\": {\n        \"POLE1\":\"nowa wartość\",\n        \"OPTIMISTIC_LOCK\":3\n    }\n}\n\n ```\n\nPostman w wygenerowanej dokumentacji podaje typ parametru `text/plain`. Poprawnie powinno jednak być `application/json`\n\n## Zakres danych przekazywanych do modyfikacji\n\nNależy przekazywać tylko dane, które mają zostać zmodyfikowane oraz są dopuszczone w danym stanie do modyfikacji. Przekazanie danych, które nie podlegają modyfikacji spowoduje zwrócenie błędu przez serwer.\n\n## Praca współbieżna i optymistyczne blokowanie danych\n\nZe względu na współbieżną pracę wielu osób oraz API konieczne jest wprowadzenie mechanizmów, które zapewnią integralność danych. Na potrzeby API wprowadzono tryb `optimistic locking`.  \nKażdy obiekt pobierany poprzez API będzie zawierał pole numeryczne o nazwie `OPTIMISTIC_LOCK`. Zawartość tego pola jest zmieniana automatycznie przy każdym zapisie rekordu do bazy (trigger w bazie). W wypadku wykonywania jakiejkolwiek operacji aktualizacji danych poprzez API konieczne jest przesłanie ostatnio odczytanej wartości pola `OPTIMISTIC_LOCK`.  \nJeżeli serwer zwróci błąd braku zgodności wartości pola `OPTIMISTIC_LOCK` to należy powonie odczytać dane i rozstrzygnąć czy wprowadzane modyfikacje nie naruszają wcześniej wprowadzonych zmian, a następnie ponownie przesłać dane do serwera podając właściwą wartość `OPTIMISTIC_LOCK`.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"8280779","team":1427022,"collectionId":"84991dcb-2b64-4cc8-ad27-264d5bf08064","publishedId":"T1LTfQRN","public":true,"publicUrl":"https://documenter-api.postman.tech/view/8280779/T1LTfQRN","privateUrl":"https://go.postman.co/documentation/8280779-84991dcb-2b64-4cc8-ad27-264d5bf08064","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2022-12-13T12:08:05.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/313877d554f86b1deb5219e2b3f1bee1f13c1d070f8fdcc87e93e36693691707","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/T1LTfQRN"}