{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"0d3a9f90-948b-44fe-8780-808ca912b446","name":"RoomPriceGenie OpenAPI","description":"Welcome to the **RoomPriceGenie API**! This API is designed to help you seamlessly integrate our pricing tools into your system, offering powerful functionality to optimize your pricing data. While the API is fully operational and ready to use, please keep in mind that we’re actively refining and improving features.\n\nWe’re committed to maintaining stability, and no breaking changes will be made without proper notice. However, you can expect periodic updates as we continue to enhance the API’s performance and capabilities. Your feedback is invaluable, and we encourage you to share your experiences and ideas to help us shape the future of the RoomPriceGenie API.\n\nTo fully understand and make the most of the API, be sure to explore the multiple examples provided for each endpoint. These examples are tailored to different use cases and will help guide you through various scenarios.\n\n<img src=\"https://content.pstmn.io/9dfb9b2b-d76c-473a-960b-6bce59054af7/Q2xlYW5TaG90IDIwMjQtMDctMTcgYXQgMTMuMzcuMjNAMngucG5n\" width=\"328\" height=\"216\">\n\n## Support\n\nIf you have any questions or need further clarification regarding our OpenAPI, please feel free to [reach out to us](https://tinyurl.com/4em8dyjh). We’re here to assist you.\n\n# Basic Flow\n\n1. RoomPriceGenie creates the property account and provides the partner with **credentials** to connect the PMS/CM.\n    \n2. The partner sends an `inventory.update` with a complete list of **Room Types** and **Rate Plans** (if applicable).\n    \n3. RoomPriceGenie maps the inventory and prepares the account to receive ARI updates.\n    \n    1. _The partner must_ _**not send any ARI data**_ _until RoomPriceGenie confirms that the account is ready._\n        \n4. Once confirmed, the partner sends a **full ARI sync** (12 or 18 months of data) and then continues sending real-time ARI updates whenever Availability, Rates or Restrictions change.\n    \n5. RoomPriceGenie sends price recommendations to the partner’s endpoint as soon as they are available.\n    \n\n# Features\n\nRoomPriceGenie supports multiple methods for calculating rates based on different occupancies and/or rate plans. Depending on the features supported by your product, there may be variations in the payloads and account configurations. Please read more about these differences below.\n\n## Inventories\n\nInventories are a list of the Room Types and Rate Plans available for a particular property (hotel).\n\n### Room Types\n\nWe support room types as:\n\n- **Flat Rate Pricing**: If you offer a single price for each room type, RoomPriceGenie will push a flat rate for that room type.\n    \n- **Occupancy Pricing**: If you support occupancy-based rates (per number of guests), please inform the minimum, maximum, and default occupancy for each room type. This information allows RoomPriceGenie to accurately calculate and adjust prices for different occupancy levels, optimizing your revenue.\n    \n\n### Rate Plans\n\nThe Rate Plans can be defined as Independent or Dependent. These are internal terminology that we use at RoomPriceGenie.\n\n- **Independent Rate Plans** are available and can be linked to all room types or some of them. For example, the BAR Rate Plan can be used by any room type.\n    \n- **Dependent Rate Plans** are tied to a particular room type. For example, if you have a BAR rate plan for each room type, they will have a unique ID each.\n    \n\n``` json\n{\"rate_plan_name\": \"BAR\", \"rate_type_code\": \"BAR_ABC\", \"room_type_code\": \"ROOM_ABC\"}\n{\"rate_plan_name\": \"BAR\", \"rate_type_code\": \"BAR_XYZ\", \"room_type_code\": \"ROOM_XYZ\"}\n\n ```\n\n## **Availability**\n\nYou should provide number of rooms available to sell, and (optionally and nice to have) the number of rooms out-of-order for each room type and date.\n\n- RoomPriceGenie can price **12 months (366 days)** or **18 months (560 days)** into the future, depending on the hotel’s subscription plan. We therefore expect partners to push availability and pricing data for the corresponding duration.\n    \n- If your system supports it, you may add a setting in your app to match the plan duration. However, for simplicity and consistency, we recommend **always sending 18 months** of data if possible.\n    \n- Partners must **always keep availability up to date**, continuously pushing new future dates as they open to ensure uninterrupted pricing coverage.\n    \n\n## Prices\n\n- **Room-Based Only**: If your PMS/CM supports only one price for the room type and no rate plans, we will push a single price for each room type and date.\n    \n- **Occupancy Based Pricing**: RoomPriceGenie can dynamically calculate prices based on varying occupancy levels for specific room types and provide them for each occupancy level.\n    \n- **Rate Plan Derivation**: If your PMS/CM does not support rate plan derivation, RoomPriceGenie can calculate different prices for various rate plans (e.g., Non-Refundable) and seamlessly push these rates to your system.\n    \n\n## Minimum Stay Restrictions\n\nRoomPriceGenie supports syncing **Minimum Stay restrictions** between RoomPriceGenie and the PMS. These restrictions can be set by the user directly in RoomPriceGenie and automatically pushed to the PMS via the integration.\n\nUsers can also leverage two other features within RoomPriceGenie to automate how minimum stay restrictions are applied or removed:\n\n#### **Automate Minimum Stay Restrictions**\n\nUsers can set up rules to **automatically remove or adjust minimum stay restrictions** based on proximity to the arrival date. For example, a user might configure RoomPriceGenie to **remove all minimum stay restrictions within 2 days of arrival**, making it easier to sell remaining inventory last-minute.\n\n#### **Orphan Gap Correction**\n\nThis feature helps prevent unbookable gaps in the calendar. If a minimum stay restriction exceeds the number of available consecutive nights (due to surrounding full dates), RoomPriceGenie will **automatically reduce the restriction** to fit the available gap.\n\n**Example**: If a 4-night minimum stay is applied on a Thursday, but only 3 consecutive nights are actually available due to nearby full occupancy, the system will adjust the minimum stay to 3 nights.\n\n# Test Account\n\nWhen you begin development your integration, we will provide you with **API credentials** and a **sandbox account** for testing. The sandbox account is a dedicated testing environment that allows you to experiment freely without affecting live production data. Initially, you will notice that the **Calendar** and **Room Setup** pages in the sandbox account are empty. This is expected and part of the setup process, which is explained below.\n\n### Room Setup\n\nAfter sending inventory data (Room Types and Rate Plans) to RoomPriceGenie, you will notice that **the room types do not automatically appear in the Room Setup page**. This is because the rooms in our system need to be manually mapped to match your data.\n\nTo quickly add all room types into the account, you can click on **1\\. Setup All Rooms**, choose any Room Types from the list, and a rate plan, if applicable. All room types should appear in the screen now.\n\nDon't worry about the number of rooms at this point.\n\n<img src=\"https://content.pstmn.io/9e280348-e7ab-474a-84ea-c13f8c0badd4/aW1hZ2UucG5n\" width=\"310\" height=\"240\">\n\nIf you prefer, our team can handle the mapping for you—just [send us an email](https://tinyurl.com/4em8dyjh) and we’ll take care of it.\n\nTo map additional room types, click the **Add New Room Type** button and repeat the process until all room types and rate plans have been configured.\n\n<img src=\"https://content.pstmn.io/5b0db4e8-d65e-475a-b3fd-5152a75953a9/Q2xlYW5TaG90IDIwMjQtMTEtMjkgYXQgMTIuMzguMDdAMngucG5n\" width=\"283\" height=\"236\">\n\n### Availability and Prices\n\nWhenever you send availability and prices data to RoomPriceGenie, the updates are not immediately reflected on the calendar. This is because the calendar automatically refreshes approximately every hour. However, if you want to see the changes immediately, you can force an update manually.\n\nTo do this, click on the three dots menu located in the top-right corner of the page and select the **Run Pricing** option. You can then specify the period of time you wish to update and confirm by clicking Run Pricing. The calendar will refresh to display the latest availability and prices after this action.\n\n<img src=\"https://content.pstmn.io/f4aa30fc-d0f1-41a1-895e-da41cde6c64f/Q2xlYW5TaG90IDIwMjQtMTEtMjkgYXQgMTIuNDAuMTVAMngucG5n\" width=\"261\" height=\"149\">\n\n### Uploading Prices\n\nWhen you are ready to receive prices from RoomPriceGenie, you can initiate the process by clicking the **Upload Prices** button, located in the top menu of your account. Then, choose the specific time period for which you want to receive the prices and click on the Upload Prices button.\n\nIf you need all prices for the selected date range to be sent again, you can enable the **Upload All Prices** checkbox. This ensures that every price within the chosen time frame is resent, regardless of whether it has changed. If you leave this option unchecked, only updated or changed prices will be sent to you.\n\nYou can also **send prices for a single day**, by clicking on a date in the calendar, and pressing the Upload Prices button at the bottom. This will send you the prices for all room types (and occupancies, if relevant) for that day.\n\n# Branding\n\nAny mention of **RoomPriceGenie** in your application must follow the correct spelling — a single word with a capital **R**, **P**, and **G**. Please ensure it is always used exactly as shown. Incorrect variations (e.g., “Room Price Genie” or “roompricegenie”) are not accepted.\n\nIf you’d like to include our logo in your application, official assets are [available here](https://roompricegenie.com/brand-guidelines/#logo).\n\n# Future Requirements\n\nRoomPriceGenie may request additional development work to enhance integration quality. This documentation will be updated as new requirements arise.\n\n- **Quick Connect**: Allows users to quickly create an account and connect to RoomPriceGenie with a seamless experience.\n    \n- **Request Endpoint**: The partner will need to accept requests from RoomPriceGenie so we can have the most updated data on our side. For example, we could trigger a request for a 365-days availability, whenever we feel our data is incorrect or outdated.\n    \n\n# Frequently Asked Questions\n\n## Reservations Data\n\n### **Revenue**\n\n**Q: How should I report revenue when multiple charges of the same type occur on the same day?**\n\nA: Each stay date entry should have only one value per revenue field. Sum all charges of the same type into a single amount. For example, if there are two F&B charges of €20 and €30 on the same day, report `fnb_gross_amount` as €50 — not two separate entries.\n\n**Q: How should I report a charge that applies to the entire stay rather than a specific night?**\n\nA: Follow how your PMS distributes it in its own reports. If the PMS spreads the amount evenly across all nights, report it that way. If it posts the full amount on the first or last night, do the same. Do not redistribute costs yourself — the goal is for your data to match your PMS reporting.\n\n**Q: What is the difference between** **`rate_gross_amount`** **and** **`room_revenue_gross_amount`****?**\n\nA: They measure different things. `rate_gross_amount` is the original room rate before any discounts or adjustments — the rack rate for that day. `room_revenue_gross_amount` is the actual accommodation revenue charged, after any discounts or surcharges. If there are no adjustments, both values will be the same.\n\n**Q: How should I report revenue posted on a date outside the reservation's arrival/departure window?**\n\nA: Send it using the actual date it was posted in your PMS, even if that falls before arrival or after departure. Include it as an entry in `stay_dates` using that date, and associate it with a room type. Any entry outside the stay window is treated as revenue-only and will not count as a room night. Set `number_of_adults` to `0` for these entries.\n\n**Q: Should I send revenue that is not tied to a specific reservation?**\n\nA: No. Only send revenue directly associated with a guest reservation. Do not include revenue from house accounts, walk-in bar or restaurant charges, external invoices, or any other income your PMS records independently of room bookings.\n\n### **Stay Dates & Room Types**\n\n**Q: Should I report non-overnight room types such as conference rooms?**\n\nA: No. The `stay_dates` array should only represent overnight accommodation — guest rooms and similar residential units. Non-overnight spaces such as conference rooms or meeting rooms should not be included.\n\nnotionvc: 9c7e1af0-71cb-44f5-8aa2-b884deac0475\n\n## **Glossary**\n\n- **Inventory**: The complete list of Room Types and Rate Plans available at a property.\n    \n- **Occupancy Pricing**: This is unrelated to Hotel Occupancy. It’s about the minimum and maximum number of guests allowed in a room type. Properties can set a price based on the number of guests. For instance, a Double Room can be booked for $100 for 2 people, but the hotel can offer it for $20 less if booked for 1 person.\n    \n- **Arrival-based Minimum Stay:** A restriction that applies **only if the guest’s check-in date matches the restricted date**. For example, if there is a 3-night minimum stay set for Friday, it means that **only guests arriving on Friday** must stay at least 3 nights. Guests arriving on other days are not affected by this restriction.\n    \n- **Stay-Through-based Minimum Stay:** A restriction that requires a booking to **include the restricted date** within a stay of at least the specified number of nights. For example, if a 3-night stay-through restriction is set for Friday, any reservation that includes Friday must have a minimum length of 3 nights—regardless of the arrival date.\n    \n- **UUID4**: A universally unique identifier (UUID) of version 4, which is randomly generated. It must be generated by the partner for each API request sent to RoomPriceGenie to ensure unique identification of the request. \\[[More info](https://www.uuidtools.com/what-is-uuid)\\]\n    \n- **property_id**: The RoomPriceGenie Account ID, which is associated with a specific property, such as a hotel or other accommodation provider.\n    \n- **HTTP POST endpoint**: A URL provided by the partner where RoomPriceGenie can send HTTP POST requests, typically expecting to handle JSON-formatted data. \\[[More info](https://www.lonti.com/blog/understanding-http-methods-in-rest-api-development#:~:text=The%20POST%20method%20explained,to%20the%20server%20for%20processing.)\\]\n    \n- The **server-backend** variable refers to the Base URL for RoomPriceGenie’s endpoints. Partners will receive both the Development and Production URLs when they begin development. It’s important to store these URLs as variables to ensure that the Development endpoint is used during testing, and the Production endpoint is used when going live.\n    \n\n## **Error Messages**\n\nWhen interacting with the RoomPriceGenie API, you may encounter error responses. Each error message is structured to provide clear details about the issue, including the type of error, its location, a descriptive message, and the input that caused the error. Below is a breakdown of the error response fields:\n\n- **type**: The category of the error (e.g., “missing”, “invalid”, \"parsing\", etc...).\n    \n- **loc**: The location in the payload where the error occurred, typically referencing a specific field.\n    \n- **msg**: A descriptive message explaining the issue and what is expected.\n    \n- **input**: The value that caused the error, or null if no value was provided.\n    \n- **ctx**: Additional context about the error.\n    \n\n**Example Error Response**\n\n``` json\n{\n    \"event\": \"rates.update\",\n    \"tracking_id\": \"UUID4\",\n    \"property_code\": \"property_code\",\n    \"errors\": [\n    {\n        \"type\": \"missing\",\n        \"loc\": \"data[0].calendar[0].prices\",\n        \"msg\": \"Field required\",\n        \"input\": null\n    },\n    {\n        \"type\": \"date_from_datetime_parsing\",\n        \"loc\": \"data[0].calendar[0].start_date\",\n        \"msg\": \"Input should be a valid date or datetime, input is too short\",\n        \"input\": \"20-01-01\",\n        \"ctx\":\n        {\n            \"error\": \"input is too short\"\n        }\n    }]\n}\n\n ```\n\n# Changelog\n\n- 19/Jul/2024: First revision published\n    \n- 28/Aug/2024: Improved explanation on Authentication flow\n    \n- 24/Sep/2024: Moved Restrictions endpoints to Future Implementations, as this is not required at the moment.\n    \n- 19/Nov/2024: Updated _Public Keys Notification_ payload\n    \n- 29/Nov/2024: Added basic instructions on how to use the provided test account for development.\n    \n- 21/Mar/2025: Added documentation for Minimum Stay Restrictions, including feature overview and payload structures for updates to and from RoomPriceGenie.\n    \n- 20/Jun/2025: Added documentation for Reservations payload, for enabling Reporting and Forecasting feature for the integrations.\n    \n- 29/Jan/2026: Added documentation for Revenue Intelligence SDK.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"30934063","team":5264627,"collectionId":"0d3a9f90-948b-44fe-8780-808ca912b446","publishedId":"2sA3e5dTaG","public":true,"publicUrl":"https://postman.roompricegenie.com","privateUrl":"https://go.postman.co/documentation/30934063-0d3a9f90-948b-44fe-8780-808ca912b446","customColor":{"top-bar":"5B48EE","right-sidebar":"303030","highlight":"5b48ee"},"documentationLayout":"classic-single-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":"https://content.pstmn.io/3a2c040d-8b86-4647-9222-4a332fc9c636/Z2VuaWUtdHJhbnNwLXdoaXRlLnBuZw==","colors":{"top-bar":"5B48EE","right-sidebar":"303030","highlight":"5B48EE"}},{"name":"light","logo":"https://content.pstmn.io/80172821-e0b2-44b8-9be5-4d4e2efe5115/Z2VuaWUtdHJhbnNwLXdoaXRlLnBuZw==","colors":{"top-bar":"5B48EE","right-sidebar":"303030","highlight":"5b48ee"}}]}},"version":"8.10.1","publishDate":"2026-01-29T17:50:03.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/80172821-e0b2-44b8-9be5-4d4e2efe5115/Z2VuaWUtdHJhbnNwLXdoaXRlLnBuZw==","logoDark":"https://content.pstmn.io/3a2c040d-8b86-4647-9222-4a332fc9c636/Z2VuaWUtdHJhbnNwLXdoaXRlLnBuZw=="}},"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/8ccb0f4c7e4601a56b98f390b5871ed9204783b184a87bff0bb713bcc686ca84","favicon":"https://roompricegenie.com/favicon.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://postman.roompricegenie.com/view/metadata/2sA3e5dTaG"}