CINXE.COM

Promotions  |  Hotel Prices  |  Google for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#1a73e8"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions?hl=vi" /><title>Promotions &nbsp;|&nbsp; Hotel Prices &nbsp;|&nbsp; Google for Developers</title> <meta property="og:title" content="Promotions &nbsp;|&nbsp; Hotel Prices &nbsp;|&nbsp; Google for Developers"><meta property="og:url" content="https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions"><meta property="og:image" content="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/opengraph/google-blue.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Promotions" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Hotel APIs", "item": "https://developers.google.com/hotels" },{ "@type": "ListItem", "position": 2, "name": "Hotel Prices", "item": "https://developers.google.com/hotels/hotel-prices" },{ "@type": "ListItem", "position": 3, "name": "Promotions", "item": "https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="google-blue" type="article" layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" aria-label="Product breadcrumb"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Hotel APIs" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Hotel Prices" tenant-name="Google for Developers" project-scope="/hotels/hotel-prices" url-scoped="https://developers.google.com/s/results/hotels/hotel-prices" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developers.google.com/hotels/hotel-prices" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - guides" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" > Guides </a> </tab> <tab > <a href="https://developers.google.com/hotels/hotel-prices/api-reference" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/api-reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - api reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" > API Reference </a> </tab> <tab class="devsite-active"> <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - xml reference" track-metadata-module="primary nav" aria-label="XML Reference, selected" data-category="Site-Wide Custom Events" data-label="Tab: XML Reference" track-name="xml reference" > XML Reference </a> </tab> <tab > <a href="https://developers.google.com/hotels/hotel-prices/dev-guide/where-to-get-help" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/dev-guide/where-to-get-help" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" > Support </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" aria-label="Upper header breadcrumb"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Hotel APIs" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guides" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/api-reference" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Reference" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: XML Reference" track-name="xml reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: XML Reference" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > XML Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/dev-guide/where-to-get-help" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Support </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/hotel-list-feed" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/hotel-list-feed" ><span class="devsite-nav-text" tooltip>Hotel List</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Availability, Rates, and Inventory (ARI)</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-property" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-property" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-property" ><span class="devsite-nav-text" tooltip>Transaction (Property Data)</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-rate" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-rate" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-rate" ><span class="devsite-nav-text" tooltip>OTA_HotelRateAmountNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-avail" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-avail" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-avail" ><span class="devsite-nav-text" tooltip>OTA_HotelAvailNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-inv" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-inv" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-inv" ><span class="devsite-nav-text" tooltip>OTA_HotelInvCountNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-tax" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-tax" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-tax" ><span class="devsite-nav-text" tooltip>TaxFeeInfo</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-promotions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-promotions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-promotions" ><span class="devsite-nav-text" tooltip>Promotions</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-rate-modifications" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-rate-modifications" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-rate-modifications" ><span class="devsite-nav-text" tooltip>RateModifications</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-extra-guest-charges" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-extra-guest-charges" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-extra-guest-charges" ><span class="devsite-nav-text" tooltip>ExtraGuestCharges</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/transaction-messages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/transaction-messages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/transaction-messages" ><span class="devsite-nav-text" tooltip>Pricing &amp; Room Inventory (Transactions)</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/rate-rules" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/rate-rules" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/rate-rules" ><span class="devsite-nav-text" tooltip>Rate Rules</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/queries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/queries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/queries" ><span class="devsite-nav-text" tooltip>Query &amp; Hint Messages</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/datetime" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/datetime" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/datetime" ><span class="devsite-nav-text" tooltip>Date/Time Formats</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/dev-guide/country-codes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/dev-guide/country-codes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/dev-guide/country-codes" ><span class="devsite-nav-text" tooltip>Country codes</span></a></li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/products" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Products </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Google Hotel APIs" > Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="5" track-type="globalNav" track-name="breadcrumb" track-metadata-position="5" track-metadata-eventdetail="" > XML Reference </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Promotions </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <h2 id="overview" data-text="Overview" tabindex="-1">Overview</h2> <p>This API lets you specify possible discounts. Of the promotions specified, Google applies the eligible promotion or set of promotions that leads to the lowest price. If you are looking for an API which supports arbitrary rate adjustments that can either increase or decrease the price when conditions are satisfied, then consider our <a href="/hotels/hotel-prices/xml-reference/ari-rate-modifications">Rate Modifications API</a>. Note that if both APIs are present, rate modifications are applied before promotions.</p> <h2 id="requests" data-text="Requests" tabindex="-1">Requests</h2> <h3 id="promotions-syntax" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr">Promotions</code> message uses the following syntax:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;Promotions partner= &#34;<var translate="no">partner_key</var>&#34; id=&#34;<var translate="no">message_ID</var>&#34; timestamp=&#34;<var translate="no">timestamp</var>&#34;&gt; &lt;HotelPromotions hotel_id=&#34;<var translate="no">HotelID</var>&#34; action=&#34;[overlay]&#34;&gt; &lt;Promotion id=&#34;<var translate="no">PromotionID</var>&#34; action=&#34;[delete]&#34;&gt; &lt;BookingDates&gt; &lt;DateRange start=&#34;YYYY-MM-DD[THH:mm:ss]&#34; end=&#34;YYYY-MM-DD[THH:mm:ss]&#34; days_of_week=<var translate="no">"MTWHFSU_or_subset"</var>/&gt; &lt;DateRange start=&#34;YYYY-MM-DD[THH:mm:ss]&#34; end=&#34;YYYY-MM-DD[THH:mm:ss]&#34; days_of_week=<var translate="no">"MTWHFSU_or_subset"</var>/&gt; &lt;/BookingDates&gt; &lt;BookingWindow min=&#34;<var translate="no">integer_or_duration</var>&#34; max=&#34;<var translate="no">integer_or_duration</var>&#34;/&gt; &lt;Ceiling amount_per_night=&#34;<var translate="no">float</var>&#34;/&gt; &lt;Floor amount_per_night=&#34;<var translate="no">float</var>&#34;/&gt; &lt;CheckinDates&gt; &lt;DateRange start=&#34;[YYYY-]MM-DD&#34; end=&#34;[YYYY-]MM-DD&#34; days_of_week=<var translate="no">"MTWHFSU_or_subset"</var>/&gt; &lt;/CheckinDates&gt; &lt;CheckoutDates&gt; &lt;DateRange start=&#34;[YYYY-]MM-DD&#34; end=&#34;[YYYY-]MM-DD&#34; days_of_week=<var translate="no">"MTWHFSU_or_subset"</var>/&gt; &lt;/CheckoutDates&gt; &lt;!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night, fixed_price, or fixed_price_per_night; applied_nights is only used with percentage, fixed_amount_per_night, and fixed_price_per_night. --&gt; &lt;Discount percentage=&#34;<var translate="no">float</var>&#34; fixed_amount=&#34;<var translate="no">float</var>&#34; fixed_amount_per_night=&#34;<var translate="no">float</var>&#34; fixed_price=&#34;<var translate="no">float</var>&#34; fixed_price_per_night=&#34;<var translate="no">float</var>&#34; applied_nights=&#34;<var translate="no">integer_1_to_99</var>&#34; rank=&#34;<var translate="no">integer_1_to_99</var>&#34;&gt; &lt;!-- FreeNights may not be used in conjunction with attributes on Discount --&gt; &lt;FreeNights stay_nights=&#34;<var translate="no">integer</var>&#34; discount_nights=&#34;<var translate="no">integer</var>&#34; discount_percentage=&#34;<var translate="no">float</var>&#34; night_selection=&#34;[cheapest|last]&#34; repeats=&#34;<var translate="no">boolean</var>&#34;/&gt; &lt;/Discount&gt; &lt;!-- Exactly one of Discount or BestDailyDiscount must be specified. Specify only one of percentage, fixed_amount, or fixed_price. --&gt; &lt;BestDailyDiscount percentage=&#34;<var translate="no">float</var>&#34; fixed_amount=&#34;<var translate="no">float</var>&#34; fixed_price=&#34;<var translate="no">float</var>&#34;/&gt; &lt;Devices&gt; &lt;Device type=&#34;[desktop|tablet|mobile]&#34;/&gt; &lt;/Devices&gt; &lt;InventoryCount min=&#34;<var translate="no">integer</var>&#34; max=&#34;<var translate="no">integer</var>&#34;/&gt; &lt;LengthOfStay min=&#34;<var translate="no">integer</var>&#34; max=&#34;<var translate="no">integer</var>&#34;/&gt; &lt;MembershipRateRule id=&#34;<var translate="no">RateRuleID</var>&#34;/&gt; &lt;MinimumAmount before_discount=&#34;<var translate="no">integer</var>&#34;/&gt; &lt;Occupancy min=&#34;<var translate="no">integer</var>&#34; max=&#34;<var translate="no">integer</var>&#34;/&gt; &lt;RatePlans&gt; &lt;RatePlan id=&#34;<var translate="no">PackageID_1</var>&#34;/&gt; &lt;RatePlan id=&#34;<var translate="no">PackageID_2</var>&#34;/&gt; &lt;/RatePlans&gt; &lt;RoomTypes&gt; &lt;RoomType id=&#34;<var translate="no">RoomID_1</var>&#34;/&gt; &lt;RoomType id=&#34;<var translate="no">RoomID_2</var>&#34;/&gt; &lt;/RoomTypes&gt; &lt;Stacking type=&#34;[any|base|none|second]&#34;/&gt; &lt;StayDates application=&#34;[all|any|overlap]&#34;&gt; &lt;DateRange start=&#34;[YYYY-]MM-DD&#34; end=&#34;[YYYY-]MM-DD&#34; days_of_week=<var translate="no">"MTWHFSU_or_subset"</var>/&gt; &lt;/StayDates&gt; &lt;UserCountries type=&#34;[include|exclude]&#34;&gt; &lt;Country code=&#34;<var translate="no">country_code</var>&#34;/&gt; &lt;/UserCountries&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre> <h3 id="promotions-elements" data-text="Elements and Attributes" tabindex="-1">Elements and Attributes</h3> <p>The Promotions message has the following elements and attributes:</p> <table class="fixed"> <tbody> <tr> <th width="23%">Element / @Attribute</th> <th width="12%">Occurrences</th> <th width="21%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no">Promotions</span></td> <td><span translate="no">1</span></td> <td><span translate="no">Complex element</span></td> <td>The root element of a promotions message.</td> </tr> <tr> <td><span translate="no">Promotions / @partner</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The partner account for this message. This string value is the "Partner key" value listed on the <a href="//hotelcenter.google.com/accountsettings/basicsettings?a="> Account settings page</a> in Hotel Center. <p class="note">If you have a backend that provides feeds for multiple accounts, this value needs to match the <code translate="no" dir="ltr">ID</code> attribute value specified in the <code translate="no" dir="ltr">&lt;RequestorID&gt;</code> element of your <code translate="no" dir="ltr">&lt;OTA_HotelRateAmountNotifRQ&gt;</code> and <code translate="no" dir="ltr">&lt;OTA_HotelAvailNotifRQ&gt;</code> messages for the same account.</p></td> </tr> <tr> <td><span translate="no">Promotions / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>A unique identifier for this request message. This value is returned in the response message. Allowed characters are a-z, A-Z, 0-9, _ (underscore), and - (dash).</td> </tr> <tr> <td><span translate="no">Promotions / @timestamp</span></td> <td><span translate="no">1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td>The creation date and time of this message.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions</span></td> <td><span translate="no">0..n</span></td> <td><span translate="no">HotelPromotions</span></td> <td><p>Promotions for a property. Each promotion applies to a single property.</p> <p class="note">Unless <code translate="no" dir="ltr">&lt;Stacking&gt;</code> is used, the promotion with the biggest discount is applied to the booking when multiple promotions are eligible.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / @hotel_id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The unique identifier for the property. This value must match the Hotel ID specified using <a href=https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed#listing> <code translate="no" dir="ltr">&lt;id&gt;</code> in the <code translate="no" dir="ltr">&lt;listing&gt;</code></a> element in the Hotel List Feed. The Hotel ID is also listed in <a href="https://hotelcenter.google.com">Hotel Center</a>.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / @action</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">enum</span></td> <td><p>If specified, the value must be <code translate="no" dir="ltr">"overlay"</code>. When the value is <code translate="no" dir="ltr">"overlay"</code>, all stored promotions are deleted prior to storing the promotions specified in the current message.</p> <p>If not specified, then each promotion specified in the current message is either:</p> <ul> <li><code translate="no" dir="ltr">Added</code> (if none of the stored promotions has the same <code translate="no" dir="ltr">id</code>)</li> <li><code translate="no" dir="ltr">Updated</code> (if a stored promotion has the same <code translate="no" dir="ltr">id</code>)</li> <li><code translate="no" dir="ltr">Deleted</code> (if a stored promotion has the same <code translate="no" dir="ltr">id</code> and the value of the <code translate="no" dir="ltr">action</code> attribute for the promotion specified in the current message is <b><code translate="no" dir="ltr">"delete"</code></b>)</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion</span></td> <td><span translate="no">0..99</span></td> <td><span translate="no">Promotion</span></td> <td><p>A single promotion for a property. Note that if <code translate="no" dir="ltr">action="overlay"</code> and a <code translate="no" dir="ltr">&lt;Promotion&gt;</code> is not specified, all promotions for the property are deleted.</p> <p class="note">If you need to use more than 99 promotions, contact your Technical Account Manager (TAM).</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>A unique identifier for the promotion. The maximum number of characters allowed is 40. Allowed characters are a-z, A-Z, 0-9, _ (underscore), - (dash), and . (period).</td> </tr> <tr> <td><span translate="no">Promotions /HotelPromotions / Promotion / @action</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">enum</span></td> <td><p>If specified, the value must be <code translate="no" dir="ltr">delete</code>. If not specified and a promotion with the same <code translate="no" dir="ltr">id</code> isn't stored, then this promotion is stored. Otherwise, if not specified and a promotion with the same <code translate="no" dir="ltr">id</code> is stored, then the existing promotion is updated.</p> <p>If <code translate="no" dir="ltr">delete</code> is specified, the stored promotion with the same <code translate="no" dir="ltr">id</code> is deleted. When using <code translate="no" dir="ltr">delete</code>, don't include any child elements in <code translate="no" dir="ltr">&lt;Promotion&gt;</code>. Also, <code translate="no" dir="ltr">delete</code> is not allowed in conjunction with <code translate="no" dir="ltr">&lt;HotelPromotions action="overlay"/&gt;</code>.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingDates</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">BookingDates</span></td> <td>A container for one or more ranges that define when booking must occur in order for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingDates / DateRange</span></td> <td><span translate="no">1..99</span></td> <td><span translate="no">DateRange</span></td> <td>A range specifying when booking must occur for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a></span> or <span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td><p>The starting date or datetime (based on the property's time zone), inclusive, of the range.</p> <ul> <li>The date or datetime specified by <code translate="no" dir="ltr">start</code> must be earlier than (or the same as) the date or datetime specified by <code translate="no" dir="ltr">end</code>.</li> <li>If <code translate="no" dir="ltr">start</code> isn't specified, the range is effectively unlimited in terms of a start time.</li> <li>If <code translate="no" dir="ltr">start</code> is populated as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT00:00:00".</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a></span> or <span translate="no"> <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td><p>The ending date or datetime (based on the property's time zone), inclusive, of the range.</p> <ul> <li>The date or datetime specified by <code translate="no" dir="ltr">end</code> must be later than (or the same as) the date or datetime specified by <code translate="no" dir="ltr">start</code>.</li> <li>If <code translate="no" dir="ltr">end</code> isn't specified, the range is effectively unlimited in terms of an end time.</li> <li>If <code translate="no" dir="ltr">end</code> is provided as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT23:59:59".</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">string</span></td> <td><p>The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.</p> <p>Valid characters are:</p> <ul> <li><code translate="no" dir="ltr">M</code> for Monday</li> <li><code translate="no" dir="ltr">T</code> for Tuesday</li> <li><code translate="no" dir="ltr">W</code> for Wednesday</li> <li><code translate="no" dir="ltr">H</code> for Thursday</li> <li><code translate="no" dir="ltr">F</code> for Friday</li> <li><code translate="no" dir="ltr">S</code> for Saturday</li> <li><code translate="no" dir="ltr">U</code> for Sunday</li> </ul> <p>Any character combination is valid.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingWindow</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">BookingWindow</span></td> <td>Specifies the time period when booking must occur relative to the check-in date (based on the property's time zone). For example, the booking window can be set to least 7 days, but not more than 180 days, prior to check-in.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingWindow / @min</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer or duration</span></td> <td>The minimum duration prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is <code translate="no" dir="ltr">0</code>, there is no minimum. <p>Valid value types are:</p> <ul> <li><b>Integer:</b> The number of days before the check-in date. For example, a value of <code translate="no" dir="ltr">30</code> indicates the promotion only applies to bookings at least 30 days before the check-in date.</li> <li><b>ISO 8601 Duration (days, hours, and minutes):</b> The number of days (and optionally hours/minutes) before the check-in date. For example, a value of <code translate="no" dir="ltr">P30D</code> indicates the promotion only applies to bookings at least 30 days before the check-in date. A value of <code translate="no" dir="ltr">P30DT6H</code> requires booking on or before 18:00 on the 30th day before arrival.</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BookingWindow / @max</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer or duration</span></td> <td>The maximum number of days prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is <code translate="no" dir="ltr">0</code>, there is no maximum. <p>Valid value types are:</p> <ul> <li><b>Integer:</b> The number of days before the check-in date. For example, a value of <code translate="no" dir="ltr">30</code> indicates the promotion only applies to bookings at most 30 days before the check-in date.</li> <li><b>ISO 8601 Duration (days, hours, and minutes):</b> The number of days (and optionally hours/minutes) before the check-in date. For example, a value of <code translate="no" dir="ltr">P30D</code> indicates the promotion only applies to bookings at most 30 days before the check-in date. A value of <code translate="no" dir="ltr">P30DT6H</code> requires booking on or after 18:00 on the 30th day before arrival.</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Ceiling</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Ceiling</span></td> <td> <p>Defines restrictions on the maximum value that a rate can be set to after promotions are applied.</p> <p>Promotions must always specify a <code translate="no" dir="ltr">&lt;Discount&gt;</code> or a <code translate="no" dir="ltr">&lt;BestDailyDiscount&gt;</code>, so to create a promotion that only applies a <code translate="no" dir="ltr">&lt;Ceiling&gt;</code>, one option is to set a <code translate="no" dir="ltr">&lt;Discount&gt;</code> with a <code translate="no" dir="ltr">percentage</code> of <code translate="no" dir="ltr">0</code>.</p> <p>If stacking is configured, then multiple promotions with <code translate="no" dir="ltr">&lt;Ceiling&gt;</code> could apply to a single stay. Each promotion would apply its discount, immediately followed by its ceiling. The following example demonstrates how each ceiling contributes to the next promotion calculation in the stack.</p> <p>Example:</p> <p>Pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 100 and there is a stack of two promotions:</p> <ol> <li>Promotion with stacking type <code translate="no" dir="ltr">base</code>, a <code translate="no" dir="ltr">fixed_amount</code> of 25, and a ceiling <code translate="no" dir="ltr">amount_per_night</code> of 60</li> <li>Promotion with stacking type <code translate="no" dir="ltr">second</code>, <code translate="no" dir="ltr">fixed_amount</code> of 25, and a ceiling <code translate="no" dir="ltr">amount_per_night</code> of 90</li> </ol> <p>Here is the order of calculation:</p> <ol> <li>The <code translate="no" dir="ltr">base</code> promotion is applied first and discounts the <code translate="no" dir="ltr">AmountBeforeTax</code> to 75, but then the ceiling lowers it to <b>60</b>.</li> <li>The <code translate="no" dir="ltr">second</code> promotion discounts the <code translate="no" dir="ltr">AmountBeforeTax</code> from 60 to 35. This is below the ceiling of 90 so the second ceiling is not applied. The final rate is <b>35</b>.</li> </ol> <p>The fact that 60 is a stricter overall ceiling is irrelevant since it is valid only for its own promotion, and there can be no single ceiling that spans the entire promotion stack.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night</span></td> <td><span translate="no">1</span></td> <td><span translate="no">float</span></td> <td> <p>The maximum amount that a nightly rate can be set to after the discount is applied.</p> <p>If a <code translate="no" dir="ltr">&lt;Floor&gt;</code> element is also specified, this must be set to a value greater than or equal to the <code translate="no" dir="ltr">amount_per_night</code> attribute in <code translate="no" dir="ltr">&lt;Floor&gt;</code>.</p> <p><code translate="no" dir="ltr">amount_per_night</code> is applied to taxes and fees when they are included in the nightly rate using <code translate="no" dir="ltr">AmountAfterTax</code>, but not those specified using TaxFeeInfo.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Floor</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Floor</span></td> <td> <p>Defines restrictions on the minimum value that a rate can be set to after promotions are applied.</p> <p>Promotions must always specify a <code translate="no" dir="ltr">&lt;Discount&gt;</code> or a <code translate="no" dir="ltr">&lt;BestDailyDiscount&gt;</code>, so to create a promotion that only applies a <code translate="no" dir="ltr">&lt;Floor&gt;</code>, one option is to set a <code translate="no" dir="ltr">&lt;Discount&gt;</code> with a <code translate="no" dir="ltr">percentage</code> of <code translate="no" dir="ltr">0</code>.</p> <p><code translate="no" dir="ltr">&lt;Floor&gt;</code> logic still applies to <code translate="no" dir="ltr">&lt;FreeNights&gt;</code> discounts, even if the free night has a <code translate="no" dir="ltr">100%</code> discount applied to it.</p> <p>If stacking is configured, then multiple promotions with <code translate="no" dir="ltr">&lt;Floor&gt;</code> could apply to a single stay. Each promotion would apply its discount, immediately followed by its floor. The following example demonstrates how each floor contributes to the next promotion calculation in the stack.</p> <p>Example:</p> <p>Pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 100 and there is a stack of two promotions:</p> <ol> <li>Promotion with stacking type <code translate="no" dir="ltr">base</code>, a <code translate="no" dir="ltr">fixed_amount</code> of 25, and a floor <code translate="no" dir="ltr">amount_per_night</code> of 90</li> <li>Promotion with stacking type <code translate="no" dir="ltr">second</code>, <code translate="no" dir="ltr">fixed_amount</code> of 25, and a floor <code translate="no" dir="ltr">amount_per_night</code> of 60</li> </ol> <p>Here is the order of calculation:</p> <ol> <li>The <code translate="no" dir="ltr">base</code> promotion is applied first and discounts the <code translate="no" dir="ltr">AmountBeforeTax</code> to 75, but then the floor raises it up to <b>90</b>.</li> <li>The <code translate="no" dir="ltr">second</code> promotion discounts the <code translate="no" dir="ltr">AmountBeforeTax</code> from 90 to 65. This is above the floor of 60 so the second floor is not applied. The final rate is <b>65</b>.</li> </ol> <p>The fact that 90 is a stricter overall floor is irrelevant since it is valid only for its own promotion, and there can be no single floor that spans the entire promotion stack.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Floor / @amount_per_night</span></td> <td><span translate="no">1</span></td> <td><span translate="no">float</span></td> <td> <p>The minimum amount that a nightly rate can be set to after the discount is applied.</p> <p>If a <code translate="no" dir="ltr">&lt;Ceiling&gt;</code> element is also specified, this must be set to a value less than or equal to the <code translate="no" dir="ltr">amount_per_night</code> attribute in <code translate="no" dir="ltr">&lt;Ceiling&gt;</code>.</p> <p><code translate="no" dir="ltr">amount_per_night</code> is applied to taxes and fees when they are included in the nightly rate using <code translate="no" dir="ltr">AmountAfterTax</code>, but not those specified using TaxFeeInfo.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckinDates</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">CheckinDates</span></td> <td>A container for one or more date ranges that define when check-in must occur for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckinDates / DateRange</span></td> <td><span translate="no">1..20</span></td> <td><span translate="no">DateRange</span></td> <td><p>A date range specifying when check-in must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.</p> <p>The <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a> format is also supported.</p> <ul> <li>If one of <code translate="no" dir="ltr">start</code> or <code translate="no" dir="ltr">end</code> is a yearless date, both must be populated as yearless dates.</li> <li>Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, <code translate="no" dir="ltr">{"12-29", "01-05"}</code> can be represented as <code translate="no" dir="ltr">{"12-29", "12-31"}</code> and <code translate="no" dir="ltr">{"01-01", "01-05"}</code>.</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the <code translate="no" dir="ltr">end</code> date. If <code translate="no" dir="ltr">start</code> isn't specified, the date range is effectively unlimited in terms of a start date.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the <code translate="no" dir="ltr">start</code> date. If <code translate="no" dir="ltr">end</code> isn't specified, the date range is effectively unlimited in terms of an end date.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">string</span></td> <td><p>The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.</p> <p>Valid characters are:</p> <ul> <li><code translate="no" dir="ltr">M</code> for Monday</li> <li><code translate="no" dir="ltr">T</code> for Tuesday</li> <li><code translate="no" dir="ltr">W</code> for Wednesday</li> <li><code translate="no" dir="ltr">H</code> for Thursday</li> <li><code translate="no" dir="ltr">F</code> for Friday</li> <li><code translate="no" dir="ltr">S</code> for Saturday</li> <li><code translate="no" dir="ltr">U</code> for Sunday</li> </ul> <p>Any character combination is valid.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckoutDates</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">CheckoutDates</span></td> <td>A container for one or more date ranges that define when check-out must occur for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange</span></td> <td><span translate="no">1..20</span></td> <td><span translate="no">DateRange</span></td> <td><p>A date range specifying when check-out must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.</p> <p>The <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a> format is also supported.</p> <ul> <li>If one of <code translate="no" dir="ltr">start</code> or <code translate="no" dir="ltr">end</code> is a yearless date, both must be populated as yearless dates.</li> <li>Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, <code translate="no" dir="ltr">{"12-29", "01-05"}</code> can be represented as <code translate="no" dir="ltr">{"12-29", "12-31"}</code> and <code translate="no" dir="ltr">{"01-01", "01-05"}</code>.</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the <code translate="no" dir="ltr">end</code> date. If <code translate="no" dir="ltr">start</code> isn't specified, the date range is effectively unlimited in terms of a start date.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the <code translate="no" dir="ltr">start</code> date. If <code translate="no" dir="ltr">end</code> isn't specified, the date range is effectively unlimited in terms of an end date.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">string</span></td> <td><p>The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.</p> <p>Valid characters are:</p> <ul> <li><code translate="no" dir="ltr">M</code> for Monday</li> <li><code translate="no" dir="ltr">T</code> for Tuesday</li> <li><code translate="no" dir="ltr">W</code> for Wednesday</li> <li><code translate="no" dir="ltr">H</code> for Thursday</li> <li><code translate="no" dir="ltr">F</code> for Friday</li> <li><code translate="no" dir="ltr">S</code> for Saturday</li> <li><code translate="no" dir="ltr">U</code> for Sunday</li> </ul> <p>Any character combination is valid.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Devices</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Devices</span></td> <td>Container for listing the user devices that are eligible for the promotion. If specified, only eligible users on the listed devices are offered the discounted rate. If not specified, eligible users on any device are offered the discounted rate.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Devices / Device</span></td> <td><span translate="no">1..3</span></td> <td><span translate="no">Device</span></td> <td>Defines one type of user device that is eligible for the promotion. </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Devices / Device / @type</span></td> <td><span translate="no">1</span></td> <td><span translate="no">enum</span></td> <td>A type of device. The value must be <code translate="no" dir="ltr"><b>desktop</b></code>, <code translate="no" dir="ltr"><b>tablet</b></code>, or <code translate="no" dir="ltr"><b>mobile</b></code>.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount</span></td> <td><span translate="no">1</span></td> <td><span translate="no">Discount</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">Discount</code> or <code translate="no" dir="ltr">BestDailyDiscount</code> must be specified.</p> <p>Specifies the discount to be applied for this promotion.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @percentage</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, <code translate="no" dir="ltr">fixed_amount_per_night</code>, <code translate="no" dir="ltr">fixed_price</code>, or <code translate="no" dir="ltr">fixed_price_per_night</code> is required.</p> <p>A decimal value from 0-100 which specifies the percentage discount. It is applied to <code translate="no" dir="ltr">AmountAfterTax</code> (or <code translate="no" dir="ltr">AmountBeforeTax</code> if <code translate="no" dir="ltr">AmountAfterTax</code> isn't specified).</p> <p>Examples:</p> <ul> <li>If <code translate="no" dir="ltr">AmountAfterTax</code> is 100 and <code translate="no" dir="ltr">percentage</code> is 20, then <p>promotion rate = <code translate="no" dir="ltr">AmountAfterTax</code> * (1 - percentage discount)</p> <p>80.00 = 100 * (1 - 0.2)</p> </li> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> is 100, <code translate="no" dir="ltr">percentage</code> is 20 and TaxFeeInfo specifies a tax of 10, then <p>promotion rate = <code translate="no" dir="ltr">AmountBeforeTax</code> * (1 - percentage discount) + tax</p> <p>90.00 = 100 * (1 - 0.2) + 10</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @fixed_amount</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, <code translate="no" dir="ltr">fixed_amount_per_night</code>, <code translate="no" dir="ltr">fixed_price</code>, or <code translate="no" dir="ltr">fixed_price_per_night</code> is required.</p> <p>A fixed amount to be subtracted from the sum of the <code translate="no" dir="ltr">AmountAfterTax</code> nightly rates (or sum of <code translate="no" dir="ltr">AmountBeforeTax</code> nightly rates if <code translate="no" dir="ltr">AmountAfterTax</code> isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.</p> <p>Examples:</p> <ul> <li>If we're pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 90, <code translate="no" dir="ltr">AmountAfterTax</code> is 100, and <code translate="no" dir="ltr">fixed_amount</code> is 20, then <p>promotion rate = <code translate="no" dir="ltr">AmountAfterTax</code> - fixed discount</p> <p>80.00 = 100 - 20</p> </li> <li>If we're pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 100, <code translate="no" dir="ltr">fixed_amount</code> is 20, and TaxFeeInfo specifies a tax of 8%, then <p>promotion rate = (<code translate="no" dir="ltr">AmountBeforeTax</code> - fixed discount) * (1 + percentage tax)</p> <p>86.40 = (100 - 20) * 1.08</p> </li> <li>If we're pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 50, <code translate="no" dir="ltr">fixed_amount</code> is 60, and TaxFeeInfo specifies a tax of 10, then <p>promotion rate = (<code translate="no" dir="ltr">AmountBeforeTax</code> - fixed discount) * tax</p> <p>10.00 = 0 + 10</p> </li> <li>If we're pricing a 3-night stay where the <code translate="no" dir="ltr">AmountAfterTax</code> values are 100, 110, and 120; and <code translate="no" dir="ltr">fixed_amount</code> is 150, then <p>promotion rate = sum(<code translate="no" dir="ltr">AmountAfterTax</code>) - (fixed discount)</p> <p>180.00 = (100 + 110 + 120) - 150</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, <code translate="no" dir="ltr">fixed_amount_per_night</code>, <code translate="no" dir="ltr">fixed_price</code>, or <code translate="no" dir="ltr">fixed_price_per_night</code> is required.</p> <p>A fixed discount applied to each of the <code translate="no" dir="ltr">AmountAfterTax</code> nightly rates (or the cheapest N if <code translate="no" dir="ltr">applied_nights</code> is specified). If <code translate="no" dir="ltr">AmountAfterTax</code> isn't specified, it is applied to <code translate="no" dir="ltr">AmountBeforeTax</code>. It is assumed to be in the same currency as nightly rates. If <code translate="no" dir="ltr">fixed_amount_per_night</code> is larger than a nightly rate, that nightly rate is reduced to as zero&mdash;the discount cannot cause a nightly rate to become negative.</p> <p>Examples:</p> <ul> <li>If we're pricing a 3-night stay where the <code translate="no" dir="ltr">AmountAfterTax</code> values are 100, 110, and 120; and the <code translate="no" dir="ltr">fixed_amount_per_night</code> is 10, then <p>promotion rate = sum(<code translate="no" dir="ltr">AmountBeforeTax</code> - fixed amount discount)</p> <p>300.00 = ((100 - 10) + (110 - 10) + (120 - 10))</p> </li> <li>If we're pricing a 3-night stay where the <code translate="no" dir="ltr">AmountAfterTax</code> values are 10, 50, and 100; and the <code translate="no" dir="ltr">fixed_amount_per_night</code> is 20, then <p>promotion rate = sum(<code translate="no" dir="ltr">AmountAfterTax</code> - fixed amount discount)</p> <p>110.00 = (0 + (50 - 20) + (100 - 20))</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @fixed_price</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, <code translate="no" dir="ltr">fixed_amount_per_night</code>, <code translate="no" dir="ltr">fixed_price</code>, or <code translate="no" dir="ltr">fixed_price_per_night</code> is required.</p> <p>If <code translate="no" dir="ltr">AmountAfterTax</code> nightly rates are specified, then this sets the price for the stay, including taxes and fees, to the specified value. If <code translate="no" dir="ltr">AmountBeforeTax</code> is specified, then whether or not <code translate="no" dir="ltr">AmountAfterTax</code> is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.</p> <p class="note">If <code translate="no" dir="ltr">AmountAfterTax</code> is intended to reflect a percentage tax, then setting a fixed price for <code translate="no" dir="ltr">AmountBeforeTax</code> can result in inaccurate taxes and fees. In general, it is strongly recommended to use <code translate="no" dir="ltr">TaxFeeInfo</code> to specify a property's taxes and fees.</p> <p>Examples:</p> <ul> <li>If we're pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 90, <code translate="no" dir="ltr">AmountAfterTax</code> is 100, and <code translate="no" dir="ltr">fixed_price</code> is 80, then the promotion rate is 80. </li> <li>If we're pricing a 1-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 100, <code translate="no" dir="ltr">fixed_amount</code> is 80, and TaxFeeInfo specifies a tax of 8%, then <p>promotion rate = fixed price * (1 + percentage tax)</p> <p>86.40 = 80 * 1.08</p> </li> <li>If we're pricing a 3-night stay where the <code translate="no" dir="ltr">AmountAfterTax</code> values are 100, 110, and 120; and <code translate="no" dir="ltr">fixed_amount</code> is 300, then <p>promotion rate = 300</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, <code translate="no" dir="ltr">fixed_amount_per_night</code>, <code translate="no" dir="ltr">fixed_price</code>, or <code translate="no" dir="ltr">fixed_price_per_night</code> is required.</p> <p>If <code translate="no" dir="ltr">AmountAfterTax</code> nightly rates are specified, then this sets the price for each night of stay, including taxes and fees, to the specified value. If <code translate="no" dir="ltr">AmountBeforeTax</code> is specified, then whether or not <code translate="no" dir="ltr">AmountAfterTax</code> is specified, this sets the pre-tax price for each night of stay to the specified value. It is assumed to be in the same currency as nightly rates.</p> <p class="note">If <code translate="no" dir="ltr">AmountAfterTax</code> is intended to reflect a percentage tax, then setting a fixed price for <code translate="no" dir="ltr">AmountBeforeTax</code> can result in inaccurate taxes and fees. In general, it is strongly recommended to use <code translate="no" dir="ltr">TaxFeeInfo</code> to specify a property's taxes and fees.</p> <p>If <code translate="no" dir="ltr">applied_nights</code> is specified, then the new price is applied to the cheapest N nights.</p> <p>Examples:</p> <ul> <li>If we're pricing a 2-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> values are 90, 90; <code translate="no" dir="ltr">AmountAfterTax</code> values are 100, 100; and <code translate="no" dir="ltr">fixed_price</code> is 80, then the promotion rate is 80 + 80 = 160. </li> <li>If we're pricing a 2-night stay where <code translate="no" dir="ltr">AmountBeforeTax</code> is 100, 100; <code translate="no" dir="ltr">fixed_amount</code> is 80, and TaxFeeInfo specifies a tax of 8%, then the promotion rate is (80 + 80) * 1.08 = 172.8. </li> <li>If we're pricing a 3-night stay where the <code translate="no" dir="ltr">AmountAfterTax</code> values are 100, 110, and 120; and <code translate="no" dir="ltr">fixed_amount</code> is 110, then the promotion rate is 110 * 3 = 330. </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @applied_nights</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td><p class="note">This should only be used with <code translate="no" dir="ltr">percentage</code> or <code translate="no" dir="ltr">fixed_amount_per_night</code>.</p> <p>The number of nights to which the discount is applied, starting with the least expensive. Must be an integer from 1 to 99. If not specified, discount is applied to all nights.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">FreeNights</span></td> <td>Specifies a discount on certain nights of a stay when a minimum stay length is met. Attributes on the parent <code translate="no" dir="ltr">Discount</code> element are not allowed if this element is used.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights</span></td> <td><span translate="no">1</span></td> <td><span translate="no">integer</span></td> <td><p>Number of required nights for the discount to be applied. Each discount is applied to a separate segment of stay nights.</p> <p>For example, for a 10-night stay where <code translate="no" dir="ltr">stay_nights</code> is 4 (and <code translate="no" dir="ltr">repeats</code> is true), then there are two stay night segments: the 1st through 4th nights and the 5th through 8th nights; the 9th and 10th nights are not part of a stay night segment.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights</span></td> <td><span translate="no">1</span></td> <td><span translate="no">integer</span></td> <td>The number of discounted nights within each segment of stay nights.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage</span></td> <td><span translate="no">1</span></td> <td><span translate="no">float</span></td> <td>The discount that is applied to the discount nights. If this value is <code translate="no" dir="ltr">50</code>, then each selected night is 50% off.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>Must be either <code translate="no" dir="ltr">cheapest</code> or <code translate="no" dir="ltr">last</code>. If <code translate="no" dir="ltr">last</code>, then the nights at the end of the segment of stay nights are discounted. If <code translate="no" dir="ltr">cheapest</code>, then the cheapest nights within the segment of stay nights are discounted.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats</span></td> <td><span translate="no">1</span></td> <td><span translate="no">boolean</span></td> <td><p>Whether the discount may be applied to multiple stay night segments. If <code translate="no" dir="ltr">false</code>, then only the segment of stay nights at the beginning of the itinerary is discounted. If <code translate="no" dir="ltr">true</code>, then any segment of stay nights is discounted.</p> <p>For example, if <code translate="no" dir="ltr">stay_nights</code> is 4 and the itinerary is 10 nights, then, if <code translate="no" dir="ltr">repeats</code> is <code translate="no" dir="ltr">true</code>, then 2 segments are discounted (nights 1-4 and nights 5-8); but, if <code translate="no" dir="ltr">repeats</code> is <code translate="no" dir="ltr">false</code>, then only 1 segment is discounted (nights 1-4).</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Discount / @rank</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>Assigns this promotion a rank and opts it into ranked selection, where only the promotion with the lowest rank is selected to be applied. Values must be between 1 and 99, inclusive. If multiple promotions share the same rank, then one is arbitrarily selected and applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BestDailyDiscount</span></td> <td><span translate="no">1</span></td> <td><span translate="no">Discount</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">Discount</code> or <code translate="no" dir="ltr">BestDailyDiscount</code> must be specified.</p> <p>Specifies a daily discount which may be applied to a night of stay. This is in contrast with <code translate="no" dir="ltr">Discount</code>, which applies discounts to entire stays.</p> <p>Each property may have a single group of promotions that are considered "best daily." This means that for each night of stay, the single "best daily" promotion that is eligible and yields the deepest discount for that night is selected and may be applied.</p> <p><code translate="no" dir="ltr">Stacking</code> may be specified with <code translate="no" dir="ltr">BestDailyDiscount</code>. It must be set to either <code translate="no" dir="ltr">base</code> or <code translate="no" dir="ltr">none</code>. The "best daily" discounts yielding the deepest discount for each night are combined and treated as a single stay discount (i.e. <code translate="no" dir="ltr">Discount</code>) while respecting the configured stacking type. This combined discount is compared against, and can be stacked with, other eligible &lt;Discount&gt; promotions to find the one or combination that provides the deepest discount. Either the combination of <code translate="no" dir="ltr">BestDailyDiscount</code> or a single <code translate="no" dir="ltr">Discount</code>, whichever yields the lower price, is selected and applied for the <code translate="no" dir="ltr">base</code> stacking type.</p> <p><code translate="no" dir="ltr">StayDates</code> can be specified with this type of discount, but the <code translate="no" dir="ltr">application</code> must be set to <code translate="no" dir="ltr">overlap</code></p>. </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, or <code translate="no" dir="ltr">fixed_price</code> is required.</p> <p>A decimal value from 0-100 which specifies the percentage discount. It is applied to <code translate="no" dir="ltr">AmountAfterTax</code> (or <code translate="no" dir="ltr">AmountBeforeTax</code> if <code translate="no" dir="ltr">AmountAfterTax</code> isn't specified).</p> <p>Examples:</p> <ul> <li>If <code translate="no" dir="ltr">AmountAfterTax</code> for a night of stay is 100 and <code translate="no" dir="ltr">percentage</code> is 20, then <p>promotion rate = <code translate="no" dir="ltr">AmountAfterTax</code> * (1 - percentage discount)</p> <p>80.00 = 100 * (1 - 0.2)</p> </li> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> for an ight of stay is 100, <code translate="no" dir="ltr">percentage</code> is 20 and TaxFeeInfo specifies a tax of 10, then <p>promotion rate = <code translate="no" dir="ltr">AmountBeforeTax</code> * (1 - percentage discount) + tax</p> <p>90.00 = 100 * (1 - 0.2) + 10</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, or <code translate="no" dir="ltr">fixed_price</code> is required.</p> <p>A fixed amount to be subtracted from a single <code translate="no" dir="ltr">AmountAfterTax</code> nightly rate (or <code translate="no" dir="ltr">AmountBeforeTax</code> nightly rate if <code translate="no" dir="ltr">AmountAfterTax</code> isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.</p> <p>Examples:</p> <ul> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> for a single night is 90, <code translate="no" dir="ltr">AmountAfterTax</code> is 100, and <code translate="no" dir="ltr">fixed_amount</code> is 20, then <p>promotion rate = <code translate="no" dir="ltr">AmountAfterTax</code> - fixed discount</p> <p>80.00 = 100 - 20</p> </li> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> for a single night is 100, <code translate="no" dir="ltr">fixed_amount</code> is 20, and TaxFeeInfo specifies a tax of 8%, then <p>promotion rate = (<code translate="no" dir="ltr">AmountBeforeTax</code> - fixed discount) * (1 + percentage tax)</p> <p>86.40 = (100 - 20) * 1.08</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">float</span></td> <td><p class="note">Exactly one of <code translate="no" dir="ltr">percentage</code>, <code translate="no" dir="ltr">fixed_amount</code>, or <code translate="no" dir="ltr">fixed_price</code> is required.</p> <p>If <code translate="no" dir="ltr">AmountAfterTax</code> nightly rates are specified, then this sets the price for the night of stay, including taxes and fees, to the specified value. If <code translate="no" dir="ltr">AmountBeforeTax</code> is specified, then whether or not <code translate="no" dir="ltr">AmountAfterTax</code> is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.</p> <p>Examples:</p> <ul> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> for a single night is 90, <code translate="no" dir="ltr">AmountAfterTax</code> is 100, and <code translate="no" dir="ltr">fixed_price</code> is 80, then the promotion rate is 80. </li> <li>If <code translate="no" dir="ltr">AmountBeforeTax</code> for a single night is 100, <code translate="no" dir="ltr">fixed_amount</code> is 80, and TaxFeeInfo specifies a tax of 8%, then <p>promotion rate = fixed price * (1 + percentage tax)</p> <p>86.40 = 80 * 1.08</p> </li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / InventoryCount</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">InventoryCount</span></td> <td>Defines restrictions on the number of rooms that must be available in order for this promotion to be applied. Discount is applied only to the nights which meet the constraint. Not allowed with the <code translate="no" dir="ltr">fixed_amount</code> discount. Note that the number of available rooms is specified with either <a href="/hotels/hotel-prices/xml-reference/ari-inv">OTA_HotelInvCountNotifRQ</a> (<code translate="no" dir="ltr">InvCount</code>) or <a href="/hotels/hotel-prices/xml-reference/ari-avail">OTA_HotelAvailNotifRQ</a> (<code translate="no" dir="ltr">BookingLimit</code>).</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / InventoryCount / @min</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The minimum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no minimum.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / InventoryCount / @max</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The maximum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no maximum.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / LengthOfStay</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">LengthOfStay</span></td> <td>Defines length of stay limits within which this promotion can be applied. The promotion is not applied when length of stay is outside of the min and max limits.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / LengthOfStay / @min</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The minimum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no minimum.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / LengthOfStay / @max</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / MembershipRateRule</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">MembershipRateRule</span></td> <td> <p>Container for a membership rate rule that triggers a specific UI treatment for the associated discount.</p> <p class="note">This element should <i>not</i> be specified unless <code translate="no" dir="ltr">&lt;Discount&gt;</code> is also specified.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / MembershipRateRule / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td> <p>ID of the <a href="/hotels/hotel-prices/xml-reference/rate-rules"> rate rule</a> associated with a membership program.</p> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / MinimumAmount</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">MinimumAmount</span></td> <td>Specifies the minimum sum of the daily room rates (using the larger of <code translate="no" dir="ltr">AmountBeforeTax</code> or <code translate="no" dir="ltr">AmountAfterTax</code>) that must be exceeded for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount</span></td> <td><span translate="no">1</span></td> <td><span translate="no">integer</span></td> <td>The value that must be exceeded for the promotion to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Occupancy</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Occupancy</span></td> <td>Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Occupancy / @min</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The user-specified occupancy must be at least this value in order for the discount to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Occupancy / @max</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">integer</span></td> <td>The user-specified occupancy must be at most this value in order for the discount to be applied.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RatePlans</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">RatePlans</span></td> <td>Container for a list of rate plans to which the promotion applies. If <code translate="no" dir="ltr">&lt;RatePlans&gt;</code> isn't specified, the promotion applies to all rate plans.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RatePlans / RatePlan</span></td> <td><span translate="no">1..n</span></td> <td><span translate="no">RatePlan</span></td> <td>Specifies a rate plan. A rate plan is defined by a combination of package, rates, and availability, as defined in Transaction (Property Data), OTA_HotelRateAmountNotifRQ, and OTA_HotelAvailNotifRQ messages, and as identified by the PackageID.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The unique identifier for the rate plan. This value maps to the PackageID value in <code translate="no" dir="ltr">&lt;PackageData&gt;</code> in a <a href="/hotels/hotel-prices/xml-reference/ari-property">Transaction (Property Data)</a> message, and in the <code translate="no" dir="ltr">RatePlanCode</code> attribute in <code translate="no" dir="ltr">&lt;StatusApplicationControl&gt;</code> in both <code translate="no" dir="ltr">&lt;OTA_HotelRateAmountNotifRQ&gt;</code> and <code translate="no" dir="ltr">&lt;OTA_HotelAvailNotifRQ&gt;</code> messages. The maximum number of characters allowed is 50.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RoomTypes</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">RoomTypes</span></td> <td>Container for a list of room types to which the promotion applies. The promotion is applied to each <code translate="no" dir="ltr">&lt;RoomType&gt;</code> specified. If <code translate="no" dir="ltr">&lt;RoomTypes&gt;</code> isn't specified, the promotion applies to all rooms.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RoomTypes / RoomType</span></td> <td><span translate="no">1..n</span></td> <td><span translate="no">RoomType</span></td> <td>Specifies a room type. A room type is defined in a <code translate="no" dir="ltr">&lt;RoomData&gt;</code> element in a <a href=https://developers.google.com/hotels/hotel-prices/xml-reference/ari-property>Transaction (Property Data)</a> message and is referenced using its <code translate="no" dir="ltr">&lt;RoomID&gt;</code> value. (Its <code translate="no" dir="ltr">&lt;RoomID&gt;</code> value is also referenced by the <code translate="no" dir="ltr">InvTypeCode</code> attribute in OTA_HotelRateAmountNotifRQ messages.)</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The unique identifier for the inventory (room type). This value maps to <code translate="no" dir="ltr">&lt;RoomID&gt;</code> in a Transaction (Property Data) message. The maximum number of characters allowed is 50.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Stacking</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Stacking</span></td> <td>Specifies how promotions can be combined. If not specified, the "type" is assumed to be <code translate="no" dir="ltr">base</code>.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / Stacking / @type</span></td> <td><span translate="no">1</span></td> <td><span translate="no">enum</span></td> <td><p>Multiple promotions can be applied to a single rate depending on this setting:</p> <ul> <li><code translate="no" dir="ltr">any</code>: Can be combined with any other promotion (except <code translate="no" dir="ltr">none</code>), but the order in which the promotions should be applied is not guaranteed.</li> <li><code translate="no" dir="ltr">base</code>: The best eligible <code translate="no" dir="ltr">base</code> promotion is selected and applied first, before other promotions. This was previously named <code translate="no" dir="ltr">base_only</code>.</li> <li><code translate="no" dir="ltr">second</code>: The best eligible <code translate="no" dir="ltr">second</code> promotion is selected and applied after a <code translate="no" dir="ltr">base</code> promotion (if applicable) and before <code translate="no" dir="ltr">any</code> promotions.</li> <li><code translate="no" dir="ltr">none</code>: Can <b>not</b> be combined with other promotions.</li> </ul> <p>Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">StayDates</span></td> <td>A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts. </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates / @application</span></td> <td><span translate="no">1</span></td> <td><span translate="no">enum</span></td> <td><p>Describes how the promotion should be applied.</p> <p>Valid values are:</p> <ul> <li><code translate="no" dir="ltr">all</code>: Applies the promotion to each night in the itinerary if <strong>all</strong> dates in the itinerary overlap with the stay dates.</li> <li><code translate="no" dir="ltr">any</code>: Applies the promotion to all nights in the itinerary if any date in the itinerary overlaps with a date in the stay dates range.</li> <li><code translate="no" dir="ltr">overlap</code>: Applies the promotion only to those nights in the itinerary that overlap with a date in the stay dates range. </li> </ul> <p>This attribute must always be specified.</p> <ul> <li>If <code translate="no" dir="ltr">&lt;Discount&gt;</code> specifies <code translate="no" dir="ltr">percentage</code> and <code translate="no" dir="ltr">application</code> is set to <code translate="no" dir="ltr">all</code> or <code translate="no" dir="ltr">any</code>, the discount is applied as a percentage of the full stay.</li> <li>If <code translate="no" dir="ltr">&lt;Discount&gt;</code> specifies <code translate="no" dir="ltr">percentage</code> and <code translate="no" dir="ltr">application</code> is set to <code translate="no" dir="ltr">overlap</code>, the discount is applied as a percentage of nightly rates for overlapping nights.</li> <li><code translate="no" dir="ltr">&lt;Discount&gt;</code> specifying <code translate="no" dir="ltr">fixed_amount</code> and <code translate="no" dir="ltr">application</code> set to <code translate="no" dir="ltr">overlap</code> is an invalid combination.</li> <li><code translate="no" dir="ltr">&lt;FreeNights&gt;</code> supports all <code translate="no" dir="ltr">application</code> values. Note that for <code translate="no" dir="ltr">overlap</code>, only overlapping nights of stay are considered for the discount requirements.</li> </ul> </td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates / DateRange</span></td> <td><span translate="no">1..99</span></td> <td><span translate="no">DateRange</span></td> <td><p>A date range specifying dates when the promotion is to be applied.</p> <p>The <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a> format is also supported.</p> <ul> <li>If one of <code translate="no" dir="ltr">start</code> or <code translate="no" dir="ltr">end</code> is a yearless date, both must be populated as yearless dates.</li> <li>Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, <code translate="no" dir="ltr">{"12-29", "01-05"}</code> can be represented as <code translate="no" dir="ltr">{"12-29", "12-31"}</code> and <code translate="no" dir="ltr">{"01-01", "01-05"}</code>.</li> </ul> <p class ="note">If you want to set <code translate="no" dir="ltr">StayDates</code> range to allow the promotion on specific days of the week, you should set the <code translate="no" dir="ltr">start</code> date as the current date with no <code translate="no" dir="ltr">end</code> so that the promotion doesn't expire.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the <code translate="no" dir="ltr">end</code> date. If <code translate="no" dir="ltr">start</code> isn't specified, the date range is effectively unlimited in terms of a start date. <p class="note">You should specify <code translate="no" dir="ltr">start</code> value if the <code translate="no" dir="ltr">end</code> value isn't provided.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#YearlessDate">YearlessDate</a></span></td> <td>The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the <code translate="no" dir="ltr">start</code> date. If <code translate="no" dir="ltr">end</code> isn't specified, the date range is effectively unlimited from the <code translate="no" dir="ltr">start</code> date onwards. <p class="note">You should specify <code translate="no" dir="ltr">end</code> value if the <code translate="no" dir="ltr">start</code> value isn't provided.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">string</span></td> <td><p>The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.</p> <p>Valid characters are:</p> <ul> <li><code translate="no" dir="ltr">M</code> for Monday</li> <li><code translate="no" dir="ltr">T</code> for Tuesday</li> <li><code translate="no" dir="ltr">W</code> for Wednesday</li> <li><code translate="no" dir="ltr">H</code> for Thursday</li> <li><code translate="no" dir="ltr">F</code> for Friday</li> <li><code translate="no" dir="ltr">S</code> for Saturday</li> <li><code translate="no" dir="ltr">U</code> for Sunday</li> </ul> <p>Any character combination is valid.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / UserCountries</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">UserCountries</span></td> <td>Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / UserCountries / @type</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">enum</span></td> <td>The type of UserCountries specification. <p>Valid values are <code translate="no" dir="ltr">include</code> and <code translate="no" dir="ltr">exclude</code>.</p> <p>If the UserCountries <code translate="no" dir="ltr">type</code> is set as <code translate="no" dir="ltr">include</code>, the promotion applies to users from the listed countries.</p> <p>If the UserCountries <code translate="no" dir="ltr">type</code> is <code translate="no" dir="ltr">exclude</code>, the promotion applies to users from outside the listed countries.</p> <p>If the UserCountries <code translate="no" dir="ltr">type</code> is unset, it is treated as <code translate="no" dir="ltr">include</code> and the promotion is applied to users from the listed countries.</p></td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / UserCountries / Country</span></td> <td><span translate="no">1..300</span></td> <td><span translate="no">Country</span></td> <td>Defines one country where users are eligible for the promotion.</td> </tr> <tr> <td><span translate="no">Promotions / HotelPromotions / Promotion / UserCountries / Country / @code</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>A <a href="/hotels/hotel-prices/dev-guide/country-codes">CLDR country code</a>, such as <code translate="no" dir="ltr">DE</code> or <code translate="no" dir="ltr">FR</code>. Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported.</td> </tr> </tbody> </table> <h3 id="promotions-examples" data-text="Examples" tabindex="-1">Examples</h3> <p>There is a limit of 500 promotions per property. Refer to &quot;Delete one promotion&quot; example to remove promotions from a property.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="basic-message" data-text="Basic message" tabindex="-1">Basic message</h3><p>The following example shows a basic <code translate="no" dir="ltr">Promotions</code> message:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingDates&gt; &lt;DateRange start=&quot;2020-07-01&quot; end=&quot;2020-07-31&quot; days_of_week=&quot;MTWHF&quot;/&gt; &lt;DateRange start=&quot;2020-09-01&quot; end=&quot;2020-09-30&quot;/&gt; &lt;/BookingDates&gt; &lt;BookingWindow min=&quot;7&quot; max=&quot;330&quot;/&gt; &lt;CheckinDates&gt; &lt;DateRange start=&quot;2020-10-01&quot; end=&quot;2020-10-31&quot; days_of_week=&quot;FSU&quot;/&gt; &lt;/CheckinDates&gt; &lt;CheckoutDates&gt; &lt;DateRange start=&quot;2020-10-08&quot; end=&quot;2020-11-07&quot; days_of_week=&quot;FSU&quot;/&gt; &lt;/CheckoutDates&gt; &lt;Devices&gt; &lt;Device type=&quot;mobile&quot;/&gt; &lt;Device type=&quot;tablet&quot;/&gt; &lt;/Devices&gt; &lt;Discount percentage=&quot;20&quot; applied_nights=&quot;2&quot;/&gt; &lt;LengthOfStay min=&quot;2&quot; max=&quot;14&quot;/&gt; &lt;RatePlans&gt; &lt;RatePlan id=&quot;234&quot;/&gt; &lt;RatePlan id=&quot;567&quot;/&gt; &lt;/RatePlans&gt; &lt;RoomTypes&gt; &lt;RoomType id=&quot;123&quot;/&gt; &lt;RoomType id=&quot;456&quot;/&gt; &lt;/RoomTypes&gt; &lt;Stacking type=&quot;base&quot;/&gt; &lt;UserCountries&gt; &lt;Country code=&quot;US&quot;/&gt; &lt;Country code=&quot;GB&quot;/&gt; &lt;/UserCountries&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="inventory-condition" data-text="Inventory condition" tabindex="-1">Inventory condition</h3><p>The following example shows how to create a discount if there is excess inventory close to the arrival date:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingWindow max=&quot;7&quot;/&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;InventoryCount min=&quot;3&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="delete-one-promotion" data-text="Delete one promotion" tabindex="-1">Delete one promotion</h3><p>The following example shows how to delete one promotion for a property:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot; action=&quot;delete&quot;/&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="delete-all-promotions" data-text="Delete all promotions" tabindex="-1">Delete all promotions</h3><p>The following example shows how to delete all promotions for a property:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot; action=&quot;overlay&quot;/&gt; &lt;/Promotions&gt; </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="overlay-all-promotions" data-text="Overlay all promotions" tabindex="-1">Overlay all promotions</h3><p>The following example shows how to overlay <code translate="no" dir="ltr">&lt;HotelPromotions&gt;</code> for a property with one or more new promotions. When <code translate="no" dir="ltr">action=&quot;overlay&quot;</code>, all stored promotions are deleted prior to storing the promotions specified in the current message:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot; action=&quot;overlay&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingDates&gt; &lt;DateRange start=&quot;2020-09-01&quot; end=&quot;2020-09-30&quot;/&gt; &lt;/BookingDates&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;RoomTypes&gt; &lt;RoomType id=&quot;123&quot;/&gt; &lt;RoomType id=&quot;456&quot;/&gt; &lt;/RoomTypes&gt; &lt;RatePlans&gt; &lt;RatePlan id=&quot;234&quot;/&gt; &lt;RatePlan id=&quot;567&quot;/&gt; &lt;/RatePlans&gt; &lt;Stacking type=&quot;base&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 class="two-line-tab" id="3-different-stacking-types" data-text="3 Different Stacking Types" tabindex="-1">3 Different Stacking Types</h3><p>The following example shows a case where three different promotions would be applied (<code translate="no" dir="ltr">base</code>, <code translate="no" dir="ltr">second</code>, <code translate="no" dir="ltr">any</code>). Note that the <code translate="no" dir="ltr">none</code> promotion wouldn&#39;t be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $72.90.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;Stacking type=&quot;base&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;2&quot;&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;Stacking type=&quot;second&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;3&quot;&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;Stacking type=&quot;any&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;4&quot;&gt; &lt;Discount percentage=&quot;25&quot;/&gt; &lt;Stacking type=&quot;none&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="none-stacking-type" data-text="None Stacking Type" tabindex="-1">None Stacking Type</h3><p>The following example shows a case where the <code translate="no" dir="ltr">none</code> promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $75.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;Stacking type=&quot;base&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;2&quot;&gt; &lt;Discount percentage=&quot;10&quot;/&gt; &lt;Stacking type=&quot;any&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;3&quot;&gt; &lt;Discount percentage=&quot;25&quot;/&gt; &lt;Stacking type=&quot;none&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 class="two-line-tab" id="booking-window-duration-bounds" data-text="Booking Window Duration Bounds" tabindex="-1">Booking Window Duration Bounds</h3><p>The following example shows a case where the <code translate="no" dir="ltr">BookingWindow</code> element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingWindow min=&quot;P1DT6H&quot; max=&quot;P2DT12H&quot;/&gt; &lt;Discount percentage=&quot;20&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 class="two-line-tab" id="booking-dates-datetime-bounds" data-text="Booking Dates DateTime Bounds" tabindex="-1">Booking Dates DateTime Bounds</h3><p>The following example shows a case where the <code translate="no" dir="ltr">BookingDates</code> element is used with <code translate="no" dir="ltr">start</code> and <code translate="no" dir="ltr">end</code> attributes as <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a> types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 2020-07-02.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingDates&gt; &lt;DateRange start=&quot;2020-07-01T06:30:00&quot; end=&quot;2020-07-02T18:45:00&quot;/&gt; &lt;/BookingDates&gt; &lt;Discount percentage=&quot;20&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="yearless-date-ranges" data-text="Yearless date ranges" tabindex="-1">Yearless date ranges</h3><p>The following example shows a case where the <code translate="no" dir="ltr">CheckInDates</code> element contains <code translate="no" dir="ltr">DateRanges</code> that have <code translate="no" dir="ltr">start</code> and <code translate="no" dir="ltr">end</code> fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;CheckInDates&gt; &lt;DateRange start=&quot;12-29&quot; end=&quot;12-31&quot;/&gt; &lt;DateRange start=&quot;01-01&quot; end=&quot;01-02&quot;/&gt; &lt;/CheckInDates&gt; &lt;Discount percentage=&quot;20&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="freenights-discount" data-text="FreeNights discount" tabindex="-1">FreeNights discount</h3><p>The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 50%.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;BookingDates&gt; &lt;DateRange start=&quot;2022-01-01&quot; end=&quot;2022-05-31&quot;/&gt; &lt;/BookingDates&gt; &lt;Discount&gt; &lt;FreeNights stay_nights=&quot;4&quot; discount_nights=&quot;2&quot; discount_percentage=&quot;50&quot; night_selection=&quot;cheapest&quot; repeats=&quot;true&quot;/&gt; &lt;/Discount&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre> <p>The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.</p> <ul> <li>2022-01-01 (stay)</li> <li>2022-01-02 (stay)</li> <li>2022-01-03</li> <li>2022-01-04 (discounted)</li> <li>2022-01-05 (stay)</li> <li>2022-01-06 (stay)</li> </ul> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;StayDates application=&quot;overlap&quot;&gt; &lt;DateRange start=&quot;2022-01-01&quot; end=&quot;2022-01-02&quot;/&gt; &lt;DateRange start=&quot;2022-01-04&quot; end=&quot;2022-01-06&quot;/&gt; &lt;/StayDates&gt; &lt;Discount&gt; &lt;FreeNights stay_nights=&quot;3&quot; discount_nights=&quot;1&quot; discount_percentage=&quot;50&quot; night_selection=&quot;last&quot; repeats=&quot;true&quot;/&gt; &lt;/Discount&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre> <p><br></p></section> <section><h3 id="ranked-selection" data-text="Ranked Selection" tabindex="-1">Ranked Selection</h3><p>The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;Property_1&quot;&gt; &lt;Promotion id=&quot;1&quot;&gt; &lt;Discount percentage=&quot;15&quot; rank=&quot;25&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;2&quot;&gt; &lt;Discount percentage=&quot;20&quot; rank=&quot;50&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre></section> <section><h3 id="bestdailydiscount" data-text="BestDailyDiscount" tabindex="-1">BestDailyDiscount</h3><p>The following example discounts a two night stay by applying <code translate="no" dir="ltr">BestDailyDiscount</code> stacked with a <code translate="no" dir="ltr">Discount</code>.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Promotions partner=&quot;account_xyz&quot; id=&quot;123_abc&quot; timestamp=&quot;2020-05-18T16:20:00-04:00&quot;&gt; &lt;HotelPromotions hotel_id=&quot;HotelID&quot; action=&quot;overlay&quot;&gt; &lt;Promotion id=&quot;general&quot;&gt; &lt;BestDailyDiscount fixed_amount=&quot;20&quot;/&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;may&quot;&gt; &lt;BestDailyDiscount fixed_amount=&quot;50&quot;/&gt; &lt;StayDates application=&quot;overlap&quot;&gt; &lt;DateRange start=&quot;2023-05-01&quot; end=&quot;2023-05-31&quot;/&gt; &lt;/StayDates&gt; &lt;/Promotion&gt; &lt;Promotion id=&quot;fiesta&quot;&gt; &lt;Discount fixed_amount_per_night=&quot;5&quot;/&gt; &lt;Stacking type=&quot;any&quot;/&gt; &lt;/Promotion&gt; &lt;/HotelPromotions&gt; &lt;/Promotions&gt; </code></pre> <p>Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.</p> <p>For the first night, the &quot;general&quot; promotion is the only eligible amount with a fixed discount of 20.</p> <p>For the second night, the &quot;may&quot; promotion offers a deeper discount than the &quot;general&quot; discount. So, when &quot;may&quot; is selected the fixed discount amount is 50.</p> <p>Then for the stay, the &quot;fiesta&quot; promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because &quot;fiesta&quot; has stacking type set to <code translate="no" dir="ltr">any</code>. If it were set to <code translate="no" dir="ltr">base</code>, then only the combination of best daily discounts or the &quot;fiesta&quot; discount is applied. See description of <code translate="no" dir="ltr">Stacking</code> for more information.</p> <p>`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.</p></section> </div> <h2 id="responses" data-text="Responses" tabindex="-1">Responses</h2> <h3 id="promotions-response-syntax" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr">PromotionsResponse</code> message uses the following syntax:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;PromotionsResponse timestamp=&#34;<var translate="no">timestamp</var>&#34; id=&#34;<var translate="no">message_ID</var>&#34; partner=&#34;<var translate="no">partner_key</var>&#34;&gt; &lt;!-- Either Success or Issues are populated. --&gt; &lt;Success/&gt; &lt;Issues&gt; &lt;Issue code=&#34;<var translate="no">issue_code</var>&#34; status=&#34;<var translate="no">issue_type</var>&#34;&gt; <var translate="no">issue_description</var> &lt;/Issue&gt; &lt;/Issues&gt; &lt;/PromotionsResponse&gt; </code></pre> <h3 id="promotions-response-elements" data-text="Elements and Attributes" tabindex="-1">Elements and Attributes</h3> <p>The <code translate="no" dir="ltr">PromotionsResponse</code> message has the following elements and attributes:</p> <table class="fixed"> <tbody> <tr> <th width="21%">Element / @Attribute</th> <th width="12%">Occurrences</th> <th width="21%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no">PromotionsResponse</span></td> <td><span translate="no">1</span></td> <td><span translate="no">Complex element</span></td> <td>The root element indicating the success or issues for a received Promotions request message.</td> </tr> <tr> <td><span translate="no">PromotionsResponse / @timestamp</span></td> <td><span translate="no">1</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td>The creation date and time of this message.</td> </tr> <tr> <td><span translate="no">PromotionsResponse / @id</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The unique identifier from the associated Promotions message.</td> </tr> <tr> <td><span translate="no">PromotionsResponse / @partner</span></td> <td><span translate="no">1</span></td> <td><span translate="no">string</span></td> <td>The partner account for this message.</td> </tr> <tr> <td><span translate="no">PromotionsResponse / Success</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Success</span></td> <td>Indicates that the Promotions message was processed successfully without warnings, errors, or failures. <p>Either <code translate="no" dir="ltr">&lt;Success&gt;</code> or <code translate="no" dir="ltr">&lt;Issues&gt;</code> is present in each message.</p> </td> </tr> <tr> <td><span translate="no">PromotionsResponse / Issues</span></td> <td><span translate="no">0..1</span></td> <td><span translate="no">Issues</span></td> <td>A container for one or more issues encountered while processing the Promotions message. <p>Either <code translate="no" dir="ltr">&lt;Success&gt;</code> or <code translate="no" dir="ltr">&lt;Issues&gt;</code> is present in each message.</p> </td> </tr> <tr> <td><span translate="no">PromotionsResponse / Issues / Issue</span></td> <td><span translate="no">1..n</span></td> <td><span translate="no">Issue</span></td> <td>The description of a warning, error, or failure encountered while processing the Promotions message. Details on these issues can be found in <a href=https://developers.google.com/hotels/hotel-prices/dev-guide/feed-status-errors>Feed Status Error Messages</a>. </td> </tr> <tr> <td> <span translate="no">PromotionsResponse / Issues / Issue / @code</span> </td> <td><span translate="no">1</span></td> <td><span translate="no">integer</span></td> <td>The identifier for the issue.</td> </tr> <tr> <td> <span translate="no">PromotionsResponse / Issues / Issue / @status</span> </td> <td><span translate="no">1</span></td> <td><span translate="no">enum</span></td> <td><p>The type of issue encountered.</p> <p>Valid values are <code translate="no" dir="ltr">warning</code>, <code translate="no" dir="ltr">error</code>, and <code translate="no" dir="ltr">failure</code>.</p> </td> </tr> </tbody> </table> <h3 id="promotions-response-examples" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="success" data-text="Success" tabindex="-1">Success</h3><p>The following is a response to a successfully processed Promotions message.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;PromotionsResponse timestamp=&quot;2020-05-18T16:20:00-04:00&quot; id=&quot;12345678&quot; partner=&quot;partner_key&quot;&gt; &lt;Success/&gt; &lt;/PromotionsResponse&gt; </code></pre></section> <section><h3 id="issues" data-text="Issues" tabindex="-1">Issues</h3><p>The following is a response to a Promotions message not processed due to errors.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;PromotionsResponse timestamp=&quot;2020-05-18T16:20:00-04:00&quot; id=&quot;12345678&quot; partner=&quot;partner_key&quot;&gt; &lt;Issues&gt; &lt;Issue code=&quot;1001&quot; status=&quot;error&quot;&gt;Example&lt;/Issue&gt; &lt;/Issues&gt; &lt;/PromotionsResponse&gt; </code></pre></section> </div> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>All rights reserved. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-09-18 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-09-18 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//googledevelopers.blogspot.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.instagram.com/googlefordevs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Instagram </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > LinkedIn </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/googledevs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > X (Twitter) </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.youtube.com/user/GoogleDevelopers" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.womentechmakers.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdg" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/experts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Developer Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/accelerators" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdsc" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//console.developers.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.cloud.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//play.google.com/apps/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.firebase.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.actions.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//chrome.google.com/webstore/developer/dashboard" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Chrome Web Store Dashboard </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 8)" > Google Home Developer Console </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/products" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/site-terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{&#34;dimensions&#34;: {&#34;dimension11&#34;: false, &#34;dimension1&#34;: &#34;Signed out&#34;, &#34;dimension3&#34;: false, &#34;dimension6&#34;: &#34;en&#34;, &#34;dimension4&#34;: &#34;Hotel Prices&#34;, &#34;dimension5&#34;: &#34;en&#34;}, &#34;gaid&#34;: &#34;UA-24532603-1&#34;, &#34;metrics&#34;: {&#34;ratings_count&#34;: &#34;metric2&#34;, &#34;ratings_value&#34;: &#34;metric1&#34;}, &#34;purpose&#34;: 1}]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;gtm&#34;: [], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Hotel Prices&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;developers&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="vLj7r3TLi4AUenqbmAnDnsPPJeX0aY"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Cloud__enable_cloud_shell","Profiles__enable_developer_profiles_callout","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__developers_footer_image","Profiles__enable_page_saving","CloudShell__cloud_code_overflow_menu","Cloud__enable_cloudx_ping","MiscFeatureFlags__enable_explain_this_code","BookNav__enable_tenant_cache_key","Profiles__enable_dashboard_curated_recommendations","Analytics__enable_clearcut_logging","MiscFeatureFlags__enable_variable_operator","MiscFeatureFlags__enable_view_transitions","Search__enable_dynamic_content_confidential_banner","Profiles__require_profile_eligibility_for_signin","CloudShell__cloud_shell_button","Search__enable_suggestions_from_borg","Concierge__enable_concierge","Profiles__enable_complete_playlist_endpoint","Cloud__enable_cloud_shell_fte_user_flow","Cloud__enable_free_trial_server_call","Profiles__enable_profile_collections","TpcFeatures__enable_required_headers","MiscFeatureFlags__enable_firebase_utm","Significatio__enable_by_tenant","DevPro__enable_developer_subscriptions","Cloud__enable_llm_concierge_chat","MiscFeatureFlags__developers_footer_dark_image","Concierge__enable_pushui","Concierge__enable_concierge_restricted","Cloud__enable_cloud_facet_chat","Cloud__enable_legacy_calculator_redirect","Profiles__enable_release_notes_notifications","Search__enable_page_map","Cloud__enable_cloud_dlp_service","Search__enable_ai_search_summaries","MiscFeatureFlags__emergency_css","Profiles__enable_awarding_url","Experiments__reqs_query_experiments","MiscFeatureFlags__enable_project_variables","DevPro__enable_cloud_innovators_plus","Profiles__enable_recognition_badges","Profiles__enable_public_developer_profiles","TpcFeatures__enable_mirror_tenant_redirects","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_completecodelab_endpoint","Search__enable_ai_eligibility_checks","Search__enable_ai_search_summaries_restricted"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[1,1],[6,5],[13,10],[15,12],[5,4],[14,11],[4,3],[11,8],[12,9],[3,2],[16,13]],[[2,2],[1,1]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10