<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.repricingrules.html">repricingrules</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(merchantId, body=None, ruleId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a repricing rule for your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, ruleId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a repricing rule in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, ruleId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a repricing rule from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, countryCode=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the repricing rules in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(merchantId, ruleId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a repricing rule in your Merchant Center account. All mutable fields will be overwritten in each update request. In each update, you must provide all required mutable fields, or an error will be thrown. If you do not provide an optional field in the update request, if that field currently exists, it will be deleted from the rule.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(merchantId, body=None, ruleId=None, x__xgafv=None)</code>
  <pre>Creates a repricing rule for your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant who owns the repricing rule. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
  &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
    &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
      { # Definition of a fixed time period.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
      },
    ],
  },
  &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
    &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
    &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
  &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
    &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
      &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
      &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
    },
    &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
  },
  &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
  &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
}

  ruleId: string, Required. The id of the rule to create.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
  &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
    &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
      { # Definition of a fixed time period.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
      },
    ],
  },
  &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
    &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
    &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
  &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
    &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
      &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
      &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
    },
    &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
  },
  &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
  &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(merchantId, ruleId, x__xgafv=None)</code>
  <pre>Deletes a repricing rule in your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant who owns the repricing rule. (required)
  ruleId: string, Required. The id of the rule to Delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, ruleId, x__xgafv=None)</code>
  <pre>Retrieves a repricing rule from your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant who owns the repricing rule. (required)
  ruleId: string, Required. The id of the rule to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
  &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
    &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
      { # Definition of a fixed time period.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
      },
    ],
  },
  &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
    &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
    &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
  &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
    &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
      &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
      &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
    },
    &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
  },
  &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
  &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, countryCode=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the repricing rules in your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant who owns the repricing rule. (required)
  countryCode: string, CLDR country code (e.g. &quot;US&quot;), used as a filter on repricing rules.
  languageCode: string, The two-letter ISO 639-1 language code associated with the repricing rule, used as a filter.
  pageSize: integer, The maximum number of repricing rules to return. The service may return fewer than this value. If unspecified, at most 50 rules will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, A page token, received from a previous `ListRepricingRules` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRepricingRules` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the `ListRepricingRules` method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;repricingRules&quot;: [ # The rules from the specified merchant.
    { # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
      &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
      &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
        &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
          { # Definition of a fixed time period.
            &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
            &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
          },
        ],
      },
      &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
        &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
          &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
            &quot;A String&quot;,
          ],
        },
        &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
          &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
            &quot;A String&quot;,
          ],
        },
        &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
        &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
          &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
      &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
      &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
      &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
        &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
          &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
          &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
        },
        &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
      },
      &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
      &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
      &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(merchantId, ruleId, body=None, x__xgafv=None)</code>
  <pre>Updates a repricing rule in your Merchant Center account. All mutable fields will be overwritten in each update request. In each update, you must provide all required mutable fields, or an error will be thrown. If you do not provide an optional field in the update request, if that field currently exists, it will be deleted from the rule.

Args:
  merchantId: string, Required. The id of the merchant who owns the repricing rule. (required)
  ruleId: string, Required. The id of the rule to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
  &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
    &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
      { # Definition of a fixed time period.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
      },
    ],
  },
  &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
    &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
    &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
  &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
    &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
      &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
      &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
    },
    &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
  },
  &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
  &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. CLDR country code (e.g. &quot;US&quot;).
  &quot;effectiveTimePeriod&quot;: { # Required. Time period when the rule should take effect.
    &quot;fixedTimePeriods&quot;: [ # A list of fixed time periods combined with OR. The maximum number of entries is limited to 5.
      { # Definition of a fixed time period.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time (exclusive) of the period. It can only be hour granularity.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time (inclusive) of the period. It can only be hour granularity.
      },
    ],
  },
  &quot;eligibleOfferMatcher&quot;: { # Matcher that specifies eligible offers. When the USE_FEED_ATTRIBUTE option is selected, only the repricing_rule_id attribute on the product feed is used to specify offer-rule mapping. When the CUSTOM_FILTER option is selected, only the *_matcher fields are used to filter the offers for offer-rule mapping. If the CUSTOM_FILTER option is selected, an offer needs to satisfy each custom filter matcher to be eligible for a rule. Size limit: the sum of the number of entries in all the matchers should not exceed 20. For example, there can be 15 product ids and 5 brands, but not 10 product ids and 11 brands. # Required. Match criteria for the eligible offers.
    &quot;brandMatcher&quot;: { # Matcher by string attributes. # Filter by the brand.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;itemGroupIdMatcher&quot;: { # Matcher by string attributes. # Filter by the item group id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
    &quot;matcherOption&quot;: &quot;A String&quot;, # Determines whether to use the custom matchers or the product feed attribute &quot;repricing_rule_id&quot; to specify offer-rule mapping.
    &quot;offerIdMatcher&quot;: { # Matcher by string attributes. # Filter by the offer id.
      &quot;strAttributes&quot;: [ # String attributes, as long as such attribute of an offer is one of the string attribute values, the offer is considered as passing the matcher. The string matcher checks an offer for inclusivity in the string attributes, not equality. Only literal string matching is supported, no regex.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the repricing rule.
  &quot;paused&quot;: True or False, # Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  &quot;restriction&quot;: { # Definition of a rule restriction. At least one of the following needs to be true: (1) use_auto_pricing_min_price is true (2) floor.price_delta exists (3) floor.percentage_delta exists If floor.price_delta and floor.percentage_delta are both set on a rule, the highest value will be chosen by the Repricer. In other words, for a product with a price of $50, if the `floor.percentage_delta` is &quot;-10&quot; and the floor.price_delta is &quot;-12&quot;, the offer price will only be lowered $5 (10% lower than the original offer price). # Required. Restriction of the rule appliance.
    &quot;floor&quot;: { # Definition of a boundary. # The inclusive floor lower bound. The repricing rule only applies when new price &gt;= floor.
      &quot;percentageDelta&quot;: 42, # The percentage delta relative to the offer selling price. This field is signed. It must be negative in floor. When it is used in floor, it should be &gt; -100. For example, if an offer is selling at $10 and this field is -30 in floor, the repricing rule only applies if the calculated new price is &gt;= $7.
      &quot;priceDelta&quot;: &quot;A String&quot;, # The price micros relative to the offer selling price. This field is signed. It must be negative in floor. For example, if an offer is selling at $10 and this field is -$2 in floor, the repricing rule only applies if the calculated new price is &gt;= $8.
    },
    &quot;useAutoPricingMinPrice&quot;: True or False, # If true, use the AUTO_PRICING_MIN_PRICE offer attribute as the lower bound of the rule. If use_auto_pricing_min_price is true, then only offers with `AUTO_PRICING_MIN_PRICE` existing on the offer will get Repricer treatment, even if a floor value is set on the rule. Also, if use_auto_pricing_min_price is true, the floor restriction will be ignored.
  },
  &quot;ruleId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID to uniquely identify each repricing rule.
  &quot;title&quot;: &quot;A String&quot;, # The title for the rule.
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of the rule.
}</pre>
</div>

</body></html>