<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="content_v2_1.repricingrules.repricingreports.html">repricingreports()</a></code>
</p>
<p class="firstline">Returns the repricingreports Resource.</p>

<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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
  },
  &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
  },
  &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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
  },
  &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
  },
  &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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
  },
  &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
  },
  &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](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
        &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
        &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
      },
      &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
      },
      &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
        &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
        &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
      },
      &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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
  },
  &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
  },
  &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;cogsBasedRule&quot;: { # A repricing rule that changes the sale price based on cost of goods sale. # The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the COGS. Ex: 20 would mean to set the adjusted price 1.2X of the COGS data.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the COGS. E.g. 2 means $2 more of the COGS.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (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;skipWhenOnPromotion&quot;: True or False, # When true, the rule won&#x27;t be applied to offers with active promotions.
  },
  &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;statsBasedRule&quot;: { # Definition of stats based rule. # The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
    &quot;percentageDelta&quot;: 42, # The percent change against the price target. Valid from 0 to 100 inclusively.
    &quot;priceDelta&quot;: &quot;A String&quot;, # The price delta against the above price target. A positive value means the price should be adjusted to be above statistical measure, and a negative value means below. Currency code must not be included.
  },
  &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>