{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"929bf1d5-3d8d-4ad7-995b-bdcda3231757","name":"Previo XML","description":"Previo XML allows other systems to pull practicaly all information about hotel/hotels such as photos, descriptions, equipments, rates or available inventory. Examples of Previo XML use:\n\n- List hotels in specified location sorted by rates or guest reviews\n    \n- Add guest's receipt from restaurant system to his/her room account\n    \n- Get guest email addresses for newletters\n    \n- Connect hotel system Previo with accounting system\n    \n- Create interface between Previo and heating systems or other third party systems\n    \n\n<img src=\"https://www.previo.cz/img/previo_xml_x1_schema.png\">\n\nThe possibilities are abundant. If you wish to use Previo XML please reach us at [info@previo.cz](https://)\n\n## Communication type\n\nPrevio XML is based on XML messages sent through HTTPS. Each function (returning rates, rooms, etc.) has it's unique URL which needs to be called.\n\nYou can call the function using it's parameters and wraping it within element. Resulting XML document must be sent using POST method to the URL of the function. The response from our server will be again an XML document bearing output of the function.\n\n### Calling Hotel.get in PHP\n\nPHP offers several methods how to send POST data to a specified URL.\n\n```\n$login    = '****';\n$password = '****';\n$request = <<            \n            <request>\n                <login>$login</login>\n                <password>$password</password>\n                <hotId>1</hotId>\n            </request>\n            XML;\n$context = stream_context_create(array(\n    'http' => array(\n    'method'  => 'POST',\n    'header'  => 'Content-Type: application/xml',\n    'content' => $request)));\n$response = file_get_contents(\n    'https://api.previo.cz/x1/hotel/get', null, $context);\necho \"<pre class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>\";\necho htmlspecialchars($response);\necho \"</pre>\";\n\n ```\n\n```\n$login    = '****';\n$password = '****';\n$request = <<            \n            <request>\n                <login>$login</login>\n                <password>$password</password>\n                <hotId>1</hotId>\n            </request>\n            XML;\n$ch = curl_init('https://api.previo.cz/x1/hotel/get');\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n$response = curl_exec($ch);\necho \"<pre class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>\";\necho htmlspecialchars($response);\necho \"</pre>\n\n ```\n\nUse _curl_ if your server doesn't allow _allow_url_fopen_. On the other hand if _curl_ is missing try _file_get_contents_.\n\n## URL addresses\n\nBasic URL of Previo XML is:\n\n[<b>https://api.previo.app/x1/</b>](https://)\n\nURL of concrete function is constructed from its name, replacing the dot with slash, lowering the first letter and addind this to the end of the URL. Examples:\n\n- Hotel.get => [https://api.previo.app/x1/hotel/get](https://)\n    \n- System.getCountries => [https://api.previo.app/x1/system/getCountries](https://)\n    \n\n# Login credentials\n\nEach function requires elements login and password. Without them it ends with error message. If you don't have your login credentials yet [please contact us](https://).\n\nWe can provide sandbox credentials if needed.\n\n# Handling errors\n\nCalling API function might fail. There might be an error in Previo API or in your parameters. In case of an error our servers return this instead of the expected document:\n\n```\nerror_code\nerror_message\n\n ```\n\n| Code | Message |\n| --- | --- |\n| 1000 | 'Internal server error' |\n| 1001 | 'Insufficient capacity. No more free objects with obkId #%s' |\n| 1002 | \"Hotel #%d does not exist\"/td> |\n| 1003 | 'Service temporary unavailable' |\n| 1004 | \"Invalid xsd:date/xsd:dateTime '%s'\" |\n| 1005 | \"Invalid dateRange/dateTimeRange '%s' - '%s'\" |\n| 1006 | \"At least one object must be specified when booking\" |\n| 1007 | \"ObjectKind #%d does not exist\" |\n| 1008 | 'Failed to book. Unknown error occured' |\n| 1009 | \"There is no collaboration with hotel #%d\" |\n| 1010 | \"Invalid collaboration status '%s'\" |\n| 1011 | \"Status must be set to '%s' when starting collaboration with hotel #%d\" |\n| 1012 | \"Hotel #%d has decided to disable collaboration you can neither enable nor activate it\" |\n| 1013 | \"Hotel #%d is under protection\" |\n| 1014 | \"Malformed typ:filter\" |\n| 1015 | 'Insufficient capacity. No more free objects with objId #%s' |\n| 1016 | \"Invalid commission status '%s'\" |\n| 1017 | \"Unsupported language '%s'\" |\n| 1018 | \"Hotel #%d has not defined any logo\" |\n| 1019 | \"ObjectKind #%d has not defined any photogallery\" |\n| 1020 | \"Unsupported imageTransport '%s'\" |\n| 1021 | \"Object (%s: %d) has only %d beds cannot accommodate %d guests\" |\n| 1022 | \"Unauthorized access to method '%s'\" |\n| 1023 | \"Unauthorized access to hotel #%d\" |\n| 1024 | \"Commission #%d does not exist\" |\n| 1025 | \"Unauthorized access to commission #%d\" |\n| 1026 | \"Unauthorized access to object kind #%d\" |\n| 1027 | \"Hotel #%d has not defined any guest category\" |\n| 1028 | \"Guest #%s does not exist.\" |\n| 1030 | \"Simultaneous access denied. Another API function still running.\" |\n| 1031 | \"Hotel #%d doesen't have a licence.\" |\n| 1032 | \"Collaboration status can't be changed to active for hotel #%d (overdue invoices)\" |\n| 1033 | \"Object #%d does not exist\" |\n| 1034 | \"Failed to save guest '%s' #%d.\" |\n| 1035 | \"Cannot change the reservation 2 or more months after guest departure.\" |\n| 2000 | \"Invalid service '%s'\" |\n| 2001 | \"Invalid operation '%s' on service '%s'\" |\n| 2002 | 'Empty request' |\n| 2003 | 'Failed to parse request xml' |\n| 2004 | 'Invalid login or password' |\n| 2005 | \"Missing required param '%s'\" |\n| 2006 | 'Invalid cosId'\" |\n| 3030 | \"Invalid resId '%s'\" |\n| 3031 | \"Invalid lanId '%s'\" |\n| 3032 | \"Invalid guest '%s'\" |\n| 3033 | \"Invalid payId '%s'\" |\n| 3034 | \"Cannot set collaboration for hotel with NONE license.\" |\n| 3035 | \"Cannot set collaboration for hotel within TEST period.\" |\n| 3036 | \"Invalid termType %s, allowed types: created, check-in, check-out, overlap.\" |\n| 3037 | \"Invalid guaId '%s'\" |\n| 3038 | \"Invalid meaId '%s'\" |\n| 3039 | \"Invalid styId '%s'\" |\n| 3040 | \"Invalid comId '%s'\" |\n| 5000 | \"Invalid data: %s\" |\n| 5001 | \"Invalid prpId\" |\n| 5002 | \"Partner %d is not active for hotel %d\" |\n| 6000 | \"Reservation is locked\" |\n\nIn most serious cases our server may response with HTTP 500 or not response at all. Don't forget to work around these situations in your code as well.\n\n# Example apps\n\n## Connection with POS (Restaurant systems)\n\n1. Call [Hotel.searchReservations](https://) with `term` parameter and date `from` set to today. Date `to` set to tomorrow. If you want to receive only reservations in status \"checked-in\" you need to set element `cosId` set to 3 (checked-in status). The output will be list of all ongoing reservations. Please note, that this might return reservations that end today and at the same time reservations that start today as well. You need to distinguish between them by the time of arrival / departure or reservation status.\n    \n2. In POS system display the list of reservations and allow to choose any reservation for transferring the consumed items. Room name can be obtained from `object` -> `name`, guest name can be obtained from `guest` -> `first_name` + `last_name`. Optionaly, but strongly recommended, there could be possibility to choose specific guest (directly from POS) who should pay the items.\n    \n3. After choosing room or room + guest call [Hotel.addAccountItem](https://), with param `comId` obtained from previous call of Hotel.searchReservations. If guest was selected as well, you need to send parameter `gueId` as well. We strongly recommend to send item segment as well (using the `segId` parameter set - ID 3- gastro, ID 1 - bar, ID 12 - restaurant). Complete list of segments can be found here:  \n    [System.getSegments](https://)\n    \n\nMost of the connected POSes include settings how to send account items\n\n- Merged items\n    \n\n`Restaurant consumption (25.6.2015 15:45) - 1pcs - 15% VAT - 200 EUR`\n\n- Merged items with reference number\n    \n\n`Restaurant consumption - 12345789 (25.6.2015 15:45) - 1pcs - 15% VAT - 200 EUR`\n\n- Splitted items\n    \n\n```\nBeer - 2pcs - 10% VAT - 70 CZK  \nGin & Tonic - 1pc - 10% VAT - 150 CZK\n\n ```","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"3291362","team":80665,"collectionId":"929bf1d5-3d8d-4ad7-995b-bdcda3231757","publishedId":"UVkgwdyt","public":true,"publicUrl":"https://xml.apidocs.previo.app","privateUrl":"https://go.postman.co/documentation/3291362-929bf1d5-3d8d-4ad7-995b-bdcda3231757","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2023-11-28T12:18:07.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"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/81f697e540cbc4bbda318f98d362cda0eb6772ca553000a3628bd8cc9ab5fec8","favicon":"https://res.cloudinary.com/postman/image/upload/v1644912360/team/to6qokpjaxcvawuzlwna.ico"},"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://xml.apidocs.previo.app/view/metadata/UVkgwdyt"}