<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.regions.html">regions</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, regionId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a region definition in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, regionId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a region definition from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, regionId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a region defined in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the regions 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, regionId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a region definition in your Merchant Center account.</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, regionId=None, x__xgafv=None)</code>
  <pre>Creates a region definition in your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant for which to create region definition. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
    &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
      &quot;postalCodes&quot;: [ # Required. A range of postal codes.
        { # A range of postal codes that defines the region area.
          &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
          &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
        },
      ],
      &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
    },
    &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
    &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
    &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
    &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
    &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
    &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
      &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
        &quot;A String&quot;,
      ],
    },
  }

  regionId: string, Required. The id of the region 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 geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
      &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
        &quot;postalCodes&quot;: [ # Required. A range of postal codes.
          { # A range of postal codes that defines the region area.
            &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
            &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
          },
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
      },
      &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
      &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
      &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
      &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
      &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
        &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
          &quot;A String&quot;,
        ],
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(merchantId, regionId, x__xgafv=None)</code>
  <pre>Deletes a region definition from your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant for which to delete region definition. (required)
  regionId: string, Required. The id of the region 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, regionId, x__xgafv=None)</code>
  <pre>Retrieves a region defined in your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant for which to retrieve region definition. (required)
  regionId: string, Required. The id of the region 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 geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
      &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
        &quot;postalCodes&quot;: [ # Required. A range of postal codes.
          { # A range of postal codes that defines the region area.
            &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
            &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
          },
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
      },
      &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
      &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
      &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
      &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
      &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
        &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
          &quot;A String&quot;,
        ],
      },
    }</pre>
</div>

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

Args:
  merchantId: string, Required. The id of the merchant for which to list region definitions. (required)
  pageToken: string, A page token, received from a previous `ListRegions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRegions` must match the call that provided the page token.
  pageSize: integer, The maximum number of regions 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.
  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 `ListRegions` 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;regions&quot;: [ # The regions from the specified merchant.
      { # Represents a geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
          &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
            &quot;postalCodes&quot;: [ # Required. A range of postal codes.
              { # A range of postal codes that defines the region area.
                &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
                &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
              },
            ],
            &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
          },
          &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
          &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
          &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
          &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
          &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
            &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
              &quot;A String&quot;,
            ],
          },
        },
    ],
  }</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, regionId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a region definition in your Merchant Center account.

Args:
  merchantId: string, Required. The id of the merchant for which to update region definition. (required)
  regionId: string, Required. The id of the region to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
    &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
      &quot;postalCodes&quot;: [ # Required. A range of postal codes.
        { # A range of postal codes that defines the region area.
          &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
          &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
        },
      ],
      &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
    },
    &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
    &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
    &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
    &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
    &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
    &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
      &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
        &quot;A String&quot;,
      ],
    },
  }

  updateMask: string, Optional. The field mask indicating the fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a geographic region that you can use as a target with both the `RegionalInventory` and `ShippingSettings` services. You can define regions as collections of either postal codes or, in some countries, using predefined geotargets.
      &quot;postalCodeArea&quot;: { # A list of postal codes that defines the region area. Note: All regions defined using postal codes are accessible via the account&#x27;s `ShippingSettings.postalCodeGroups` resource. # A list of postal codes that defines the region area.
        &quot;postalCodes&quot;: [ # Required. A range of postal codes.
          { # A range of postal codes that defines the region area.
            &quot;end&quot;: &quot;A String&quot;, # Optional. A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is defined as being all the postal codes matching postalCodeRangeBegin.
            &quot;begin&quot;: &quot;A String&quot;, # Required. A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range defining the area. Examples values: &quot;94108&quot;, &quot;9410*&quot;, &quot;9*&quot;.
          },
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR territory code or the country the postal code group applies to.
      },
      &quot;regionId&quot;: &quot;A String&quot;, # Output only. Immutable. The ID uniquely identifying each region.
      &quot;shippingEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Shipping Services configuration.
      &quot;regionalInventoryEligible&quot;: True or False, # Output only. Indicates if the region is eligible to use in the Regional Inventory configuration.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the region.
      &quot;merchantId&quot;: &quot;A String&quot;, # Output only. Immutable. Merchant that owns the region.
      &quot;geotargetArea&quot;: { # A list of geotargets that defines the region area. # A list of geotargets that defines the region area.
        &quot;geotargetCriteriaIds&quot;: [ # Required. A non-empty list of [location IDs](https://developers.google.com/adwords/api/docs/appendix/geotargeting). They must all be of the same location type (e.g., state).
          &quot;A String&quot;,
        ],
      },
    }</pre>
</div>

</body></html>