{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"545ab41b-521d-4af4-94a2-567c25b4e284","name":"EQC","description":"# Introduction\n\nEQC XML is used to interface hotel system (front-office) or channel manager with Previo. The only functions are:\n\n- Sending rates, availbility, restrictions from your system to Previo\n- Retrieving reservations from Previo\n    \n\nEQC XML is a copy of API used by [Expedia.com](http://www.expedia.com/). We use version EQC/2007/08 (0.8.5).\n\n# Overview\n\nIn order to connect with other PMS systems and Channel Managers Previo offers a copy of verified and well-know interface Expedia QuickConnect (EQC) introduced by Expedia Inc. Please note, that Previo uses EQC version 0.8.5 which doesn't support multiple Availability changes per 1 request.\n\nThis interface allows to transfer:\n\n- Reservations from Previo (by partner accommodation portals or hotel own website booking engine) into the hotel PMS.\n- Rates and availability from third party PMS (or Channel manager) to Previo\n    \n\n# Authentication\n\nAll requests have `Authentication` element with `username` and `password` attributes. If you don't have your login credentials yet please [contact us](https://info@previo.cz).\n\nWe can provide sandbox credentials if needed.\n\n# Endpoints\n\nWSDLs are available [here](https://drive.google.com/drive/folders/1q2KA6-Gx5Jqm5eOaFgY46tBuilBfngoi?usp=sharing).\n\n| Service | URL | WSDL |\n| --- | --- | --- |\n| AvailRateUpdate | [https://api.previo.app/eqc1/ar](https://api.previo.cz/eqc1/ar) | AvailRateUpdateRQ.xsd  <br>AvailRateUpdateRS.xsd |\n| BookingRetrieval | [https://api.previo.app/eqc1/br](https://api.previo.cz/eqc1/br) | BookingRetrievalRQ.xsd  <br>BookingRetrievalRS.xsd |\n\n# Differences in implementation\n\nPrevio EQC differs from original Expedia EQC in few details both technical and business related.\n\n## Booking Confirmation\n\nBookingConfirmation is not implemented. You do not need to confirm reservations. Reservations are marked as confirmed automatically after providing them.\n\n## minLOS\n\nMinimum length of stay is supported. Hotels can however have PMS setting, that allowing minLOS on season level only. In this case Setting _minLOS_ for one room type rewrites also _minLOS_ with all other room types. If the minLOS setting is set on season & room type level, the minLOS will be adjusted according the request.\n\n## Rate plans\n\nTo get list of available rate plans use REST API function: [https://rest.apidocs.previo.cz/#a2bf3989-d359-4db9-bef2-d8ac6b7e68dc](https://rest.apidocs.previo.cz/#a2bf3989-d359-4db9-bef2-d8ac6b7e68dc)\n\n## Base allocation\n\nPrevio EQC does not support base allocation. Use _flexibleAllocation_ to set absolute occupancy (availability).\n\n## Charging method PER_PERSON_PRICING\n\nThere are only these two models in Previo: OCCUPANCY_PRICING and PER_DAY_PRICING. But because PER_PERSON_PRICING is easily convertible to OCCUPANCY_PRICING without loss of any data Previo EQC accepts it. But it's name never shows up in error code **3090**.\n\n# Error Codes\n\nExpedia EQC doesn't have to end the request validation right after first found error but may cumulate them. The response is then more descriptive:\n\n```\n<Error code=\"1001\">Authentication error: invalid username or password. Ref=[bb6129a8-3ef5-11de-b3d3-9af40e95639f]</Error>  \n<Error code=\"3202\">Hotel ID not found. You either specified an invalid hotel ID or your account is not linked to this hotel. Ref=[bb6129a8-3ef5-11de-b3d3-9af40e95639f]</Error>  \n<Error code=\"3203\">Room type ID 278951 not found. Ref=[bb6129a8-3ef5-11de-b3d3-9af40e95639f]</Error>  \n<Error code=\"3204\">Rate plan ID 809437 not found. Ref=[bb6129a8-3ef5-11de-b3d3-9af40e95639f]</Error>\n\n ```\n\nOn the other hand Previo EQC ends validation immediately after the first found error and returns it in the response.\n\n### Warnings\n\nExpedia EQC may even in cases of successful validation (_Success_) send back one or more warnings. Previo EQC does not send warnings, function either succeeds or fails.\n\n| Error code | Error description | Support in Previo EQC | Note |\n| --- | --- | --- | --- |\n| 1000 | Access denied: you are not authorized to use Expedia QuickConnect. Please contact Expedia to gain access. | YES | When the login and password are correct but the user is not allowed to call that function due to user rights policy. |\n| 1001 | Authentication error: invalid username or password. | YES |  |\n| 2002 | Parsing error: malformed xml. | YES | Error in xml is not specified. |\n| 2010 | The namespace specified is invalid. | NO | Invalid namespace does not pass validation and location of the error is thrown in error code 3010. |\n| 3010 | Validation against schema failed because a value exceeds its defined length, the format is wrong, or because of another validation enforced by schema. | YES |  |\n| 3015 | Business validation error. For example: Rate plan can't be closed because there are some rooms remaining in base allocation Net rate specified is \"extreme\" (too low or too high) Any other type of business error not covered by other error codes. | NO | The specified price is not checked. |\n| 3020 | Validation error: start date must not be before yesterday. | YES |  |\n| 3021 | Validation error: end date must not be before start date. | YES |  |\n| 3022 | Validation error: end date must be within 2 years. | YES |  |\n| 3023 | Validation error: date range must be within 365 days. | YES |  |\n| 3024 | No availability and rate information is currently loaded for the selected period, room type and/or rate plan. | NO |  |\n| 3040 | The room type you are trying to modify () is inactive. | PARTIALLY | There is no way in previo to deactivate a room type. This error will be thrown if the given type of rooms are not set or the number of beds is 0. |\n| 3050 | The rate plan you are trying to modify () is inactive. | NO |  |\n| 3080 | Booking ID cannot be found. Please make sure you are not trying to retrieve a booking for which the guest arrived before . Old bookings can't be retrieved through this mechanism. | PARTIALLY | Invalid id is checked. However, you can download any old reservations. Restrictions to two weeks do not apply. |\n| 3081 | Hotel ID and Booking ID mismatch: the Hotel ID specified in the BR RQ doesn't match the Booking ID for that request. | YES |  |\n| 3090 | Pricing models mismatch: you tried to update a price for , but your property is configured to use . | PARTIALLY | Previo does not distinguish between pricing models OCCUPANCY_PRICING and PER_PERSON_PRICING. |\n| 3091 | Occupancy level redundancy: you specified twice the same occupancy level for rate . | YES |  |\n| 3092 | Occupancy level problem with rate plan : levels of each occupancy have to be created sequentially and in order. You tried to skip a level (last level created was and you tried to create level ). | YES |  |\n| 3103 | Currency code mismatch. | YES |  |\n| 3202 | Hotel ID not found. You either specified an invalid hotel ID or your account is not linked to this hotel. Note: If the system finds no hotels listed for the specified user, the error message is slightly different: \"No hotels associated with that user\". | YES |  |\n| 3203 | Room type ID not found. | YES |  |\n| 3204 | Rate plan ID not found. | NO |  |\n| 3301 | Update refused. No more than 10 confirmation numbers can be sent in a single message. | YES |  |\n| 3310 | Update refused: a unique rate plan (rate plan ID ) was specified times in the same AR update message. The same rate plan ID may not by used more than once per message. | NO |  |\n| 3320 | Update refused: a unique room type (room type ID was specified times in the same AR update message. The same room type ID may not by used more than once per message. | NO |  |\n| 4000 | Internal processing error, please try again in a few minutes. | YES |  |\n| 4001 | Internal timeout error, please try again in a few minutes. | NO |  |\n| 4003 | Internal configuration error.. | NO |  |\n| 4206 | Expedia QuickConnect interface is temporarily closed. Please try again shortly. | NO |  |\n| 4210 | Communication error: exceed max number of connections allowed (1). | NO |  |\n| 5000 | Internal database error, please try again in a few minutes. | NO |  |\n| 7018 | Base Availability request adjusted to prevent total availability from exceeding the system maximum | YES | If flexible allocation exceeds number of rooms given room kind set in Previo (warning only - allotment is adjusted to maximum room capacity) |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"3291362","team":80665,"collectionId":"545ab41b-521d-4af4-94a2-567c25b4e284","publishedId":"UVkmPGaE","public":true,"publicUrl":"https://eqc.apidocs.previo.app","privateUrl":"https://go.postman.co/documentation/3291362-545ab41b-521d-4af4-94a2-567c25b4e284","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:35.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://eqc.apidocs.previo.app/view/metadata/UVkmPGaE"}