<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.collections.html">collections</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, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads a collection to your Merchant Center account. If a collection with the same collectionId already exists, this method updates that entry. In each update, the collection is completely replaced by the fields in the body of the update request.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, collectionId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a collection from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, collectionId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a collection from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the collections in your Merchant Center account. The response might contain fewer items than specified by page_size. Rely on next_page_token to determine if there are more items to be requested.</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>
<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, x__xgafv=None)</code>
  <pre>Uploads a collection to your Merchant Center account. If a collection with the same collectionId already exists, this method updates that entry. In each update, the collection is completely replaced by the fields in the body of the update request.

Args:
  merchantId: string, Required. The ID of the account that contains the collection. This account cannot be a multi-client account. (required)
  body: object, The request body.
    The object takes the form of:

{ # The collection message.
  &quot;customLabel0&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns. [Custom label](https://support.google.com/merchants/answer/9674217)
  &quot;customLabel1&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;featuredProduct&quot;: [ # This identifies one or more products associated with the collection. Used as a lookup to the corresponding product ID in your product feeds. Provide a maximum of 100 featuredProduct (for collections). Provide up to 10 featuredProduct (for Shoppable Images only) with ID and X and Y coordinates. [featured_product attribute](https://support.google.com/merchants/answer/9703736)
    { # The message for FeaturedProduct. [FeaturedProduct](https://support.google.com/merchants/answer/9703736)
      &quot;offerId&quot;: &quot;A String&quot;, # The unique identifier for the product item.
      &quot;x&quot;: 3.14, # Required. X-coordinate of the product callout on the Shoppable Image.
      &quot;y&quot;: 3.14, # Required. Y-coordinate of the product callout on the Shoppable Image.
    },
  ],
  &quot;headline&quot;: [ # Your collection&#x27;s name. [headline attribute](https://support.google.com/merchants/answer/9673580)
    &quot;A String&quot;,
  ],
  &quot;id&quot;: &quot;A String&quot;, # Required. The REST ID of the collection. Content API methods that operate on collections take this as their collectionId parameter. The REST ID for a collection is of the form collectionId. [id attribute](https://support.google.com/merchants/answer/9649290)
  &quot;imageLink&quot;: [ # The URL of a collection’s image. [image_link attribute](https://support.google.com/merchants/answer/9703236)
    &quot;A String&quot;,
  ],
  &quot;language&quot;: &quot;A String&quot;, # The language of a collection and the language of any featured products linked to the collection. [language attribute](https://support.google.com/merchants/answer/9673781)
  &quot;link&quot;: &quot;A String&quot;, # A collection’s landing page. URL directly linking to your collection&#x27;s page on your website. [link attribute](https://support.google.com/merchants/answer/9673983)
  &quot;mobileLink&quot;: &quot;A String&quot;, # A collection’s mobile-optimized landing page when you have a different URL for mobile and desktop traffic. [mobile_link attribute](https://support.google.com/merchants/answer/9646123)
  &quot;productCountry&quot;: &quot;A String&quot;, # [product_country attribute](https://support.google.com/merchants/answer/9674155)
}

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

Returns:
  An object of the form:

    { # The collection message.
  &quot;customLabel0&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns. [Custom label](https://support.google.com/merchants/answer/9674217)
  &quot;customLabel1&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;featuredProduct&quot;: [ # This identifies one or more products associated with the collection. Used as a lookup to the corresponding product ID in your product feeds. Provide a maximum of 100 featuredProduct (for collections). Provide up to 10 featuredProduct (for Shoppable Images only) with ID and X and Y coordinates. [featured_product attribute](https://support.google.com/merchants/answer/9703736)
    { # The message for FeaturedProduct. [FeaturedProduct](https://support.google.com/merchants/answer/9703736)
      &quot;offerId&quot;: &quot;A String&quot;, # The unique identifier for the product item.
      &quot;x&quot;: 3.14, # Required. X-coordinate of the product callout on the Shoppable Image.
      &quot;y&quot;: 3.14, # Required. Y-coordinate of the product callout on the Shoppable Image.
    },
  ],
  &quot;headline&quot;: [ # Your collection&#x27;s name. [headline attribute](https://support.google.com/merchants/answer/9673580)
    &quot;A String&quot;,
  ],
  &quot;id&quot;: &quot;A String&quot;, # Required. The REST ID of the collection. Content API methods that operate on collections take this as their collectionId parameter. The REST ID for a collection is of the form collectionId. [id attribute](https://support.google.com/merchants/answer/9649290)
  &quot;imageLink&quot;: [ # The URL of a collection’s image. [image_link attribute](https://support.google.com/merchants/answer/9703236)
    &quot;A String&quot;,
  ],
  &quot;language&quot;: &quot;A String&quot;, # The language of a collection and the language of any featured products linked to the collection. [language attribute](https://support.google.com/merchants/answer/9673781)
  &quot;link&quot;: &quot;A String&quot;, # A collection’s landing page. URL directly linking to your collection&#x27;s page on your website. [link attribute](https://support.google.com/merchants/answer/9673983)
  &quot;mobileLink&quot;: &quot;A String&quot;, # A collection’s mobile-optimized landing page when you have a different URL for mobile and desktop traffic. [mobile_link attribute](https://support.google.com/merchants/answer/9646123)
  &quot;productCountry&quot;: &quot;A String&quot;, # [product_country attribute](https://support.google.com/merchants/answer/9674155)
}</pre>
</div>

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

Args:
  merchantId: string, Required. The ID of the account that contains the collection. This account cannot be a multi-client account. (required)
  collectionId: string, Required. The collectionId of the collection. CollectionId is the same as the REST ID of the collection. (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, collectionId, x__xgafv=None)</code>
  <pre>Retrieves a collection from your Merchant Center account.

Args:
  merchantId: string, Required. The ID of the account that contains the collection. This account cannot be a multi-client account. (required)
  collectionId: string, Required. The REST ID of the collection. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The collection message.
  &quot;customLabel0&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns. [Custom label](https://support.google.com/merchants/answer/9674217)
  &quot;customLabel1&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  &quot;featuredProduct&quot;: [ # This identifies one or more products associated with the collection. Used as a lookup to the corresponding product ID in your product feeds. Provide a maximum of 100 featuredProduct (for collections). Provide up to 10 featuredProduct (for Shoppable Images only) with ID and X and Y coordinates. [featured_product attribute](https://support.google.com/merchants/answer/9703736)
    { # The message for FeaturedProduct. [FeaturedProduct](https://support.google.com/merchants/answer/9703736)
      &quot;offerId&quot;: &quot;A String&quot;, # The unique identifier for the product item.
      &quot;x&quot;: 3.14, # Required. X-coordinate of the product callout on the Shoppable Image.
      &quot;y&quot;: 3.14, # Required. Y-coordinate of the product callout on the Shoppable Image.
    },
  ],
  &quot;headline&quot;: [ # Your collection&#x27;s name. [headline attribute](https://support.google.com/merchants/answer/9673580)
    &quot;A String&quot;,
  ],
  &quot;id&quot;: &quot;A String&quot;, # Required. The REST ID of the collection. Content API methods that operate on collections take this as their collectionId parameter. The REST ID for a collection is of the form collectionId. [id attribute](https://support.google.com/merchants/answer/9649290)
  &quot;imageLink&quot;: [ # The URL of a collection’s image. [image_link attribute](https://support.google.com/merchants/answer/9703236)
    &quot;A String&quot;,
  ],
  &quot;language&quot;: &quot;A String&quot;, # The language of a collection and the language of any featured products linked to the collection. [language attribute](https://support.google.com/merchants/answer/9673781)
  &quot;link&quot;: &quot;A String&quot;, # A collection’s landing page. URL directly linking to your collection&#x27;s page on your website. [link attribute](https://support.google.com/merchants/answer/9673983)
  &quot;mobileLink&quot;: &quot;A String&quot;, # A collection’s mobile-optimized landing page when you have a different URL for mobile and desktop traffic. [mobile_link attribute](https://support.google.com/merchants/answer/9646123)
  &quot;productCountry&quot;: &quot;A String&quot;, # [product_country attribute](https://support.google.com/merchants/answer/9674155)
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the collections in your Merchant Center account. The response might contain fewer items than specified by page_size. Rely on next_page_token to determine if there are more items to be requested.

Args:
  merchantId: string, Required. The ID of the account that contains the collection. This account cannot be a multi-client account. (required)
  pageSize: integer, The maximum number of collections to return in the response, used for paging. Defaults to 50; values above 1000 will be coerced to 1000.
  pageToken: string, Token (if provided) to retrieve the subsequent page. All other parameters must match the original 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 ListCollections 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;resources&quot;: [ # The collections listed.
    { # The collection message.
      &quot;customLabel0&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns. [Custom label](https://support.google.com/merchants/answer/9674217)
      &quot;customLabel1&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
      &quot;customLabel2&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
      &quot;customLabel3&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
      &quot;customLabel4&quot;: &quot;A String&quot;, # Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
      &quot;featuredProduct&quot;: [ # This identifies one or more products associated with the collection. Used as a lookup to the corresponding product ID in your product feeds. Provide a maximum of 100 featuredProduct (for collections). Provide up to 10 featuredProduct (for Shoppable Images only) with ID and X and Y coordinates. [featured_product attribute](https://support.google.com/merchants/answer/9703736)
        { # The message for FeaturedProduct. [FeaturedProduct](https://support.google.com/merchants/answer/9703736)
          &quot;offerId&quot;: &quot;A String&quot;, # The unique identifier for the product item.
          &quot;x&quot;: 3.14, # Required. X-coordinate of the product callout on the Shoppable Image.
          &quot;y&quot;: 3.14, # Required. Y-coordinate of the product callout on the Shoppable Image.
        },
      ],
      &quot;headline&quot;: [ # Your collection&#x27;s name. [headline attribute](https://support.google.com/merchants/answer/9673580)
        &quot;A String&quot;,
      ],
      &quot;id&quot;: &quot;A String&quot;, # Required. The REST ID of the collection. Content API methods that operate on collections take this as their collectionId parameter. The REST ID for a collection is of the form collectionId. [id attribute](https://support.google.com/merchants/answer/9649290)
      &quot;imageLink&quot;: [ # The URL of a collection’s image. [image_link attribute](https://support.google.com/merchants/answer/9703236)
        &quot;A String&quot;,
      ],
      &quot;language&quot;: &quot;A String&quot;, # The language of a collection and the language of any featured products linked to the collection. [language attribute](https://support.google.com/merchants/answer/9673781)
      &quot;link&quot;: &quot;A String&quot;, # A collection’s landing page. URL directly linking to your collection&#x27;s page on your website. [link attribute](https://support.google.com/merchants/answer/9673983)
      &quot;mobileLink&quot;: &quot;A String&quot;, # A collection’s mobile-optimized landing page when you have a different URL for mobile and desktop traffic. [mobile_link attribute](https://support.google.com/merchants/answer/9646123)
      &quot;productCountry&quot;: &quot;A String&quot;, # [product_country attribute](https://support.google.com/merchants/answer/9674155)
    },
  ],
}</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>

</body></html>