<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.html">Content API for Shopping</a> . <a href="content_v2.products.html">products</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="#custombatch">custombatch(body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves, inserts, and deletes multiple products in a single request.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, productId, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a product from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, productId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a product from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(merchantId, body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads a product to your Merchant Center account. If an item with the same channel, contentLanguage, offerId, and targetCountry already exists, this method updates that entry.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, includeInvalidInsertedItems=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the products in your Merchant Center account. The response might contain fewer items than specified by maxResults. Rely on nextPageToken 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="custombatch">custombatch(body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Retrieves, inserts, and deletes multiple products in a single request.

Args:
  body: object, The request body.
    The object takes the form of:

{
  &quot;entries&quot;: [ # The request entries to be processed in the batch.
    { # A batch entry encoding a single non-batch products request.
      &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
      &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
      &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`delete`&quot; - &quot;`get`&quot; - &quot;`insert`&quot;
      &quot;product&quot;: { #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect. # The product to insert. Only required if the method is `insert`.
        &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
          &quot;A String&quot;,
        ],
        &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
          &quot;A String&quot;,
        ],
        &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
        &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
        &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
          &quot;A String&quot;,
        ],
        &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
        &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
        &quot;aspects&quot;: [ # Deprecated. Do not use.
          {
            &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
            &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
            &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
          },
        ],
        &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
        &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
        &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
        &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
        &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
        &quot;color&quot;: &quot;A String&quot;, # Color of the item.
        &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
        &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
        &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
          {
            &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
            &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
            &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
            &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
          },
        ],
        &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
          {
            &quot;attributes&quot;: [ # The sub-attributes.
              {
                &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
                &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
                &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
                &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
          },
        ],
        &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
        &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
        &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
        &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
        &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
        &quot;description&quot;: &quot;A String&quot;, # Description of the item.
        &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
          {
            &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
            &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
          },
        ],
        &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
        &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
        &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
          &quot;A String&quot;,
        ],
        &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
        &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
        &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
        &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
        &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
        &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
        &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
        &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
        &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
        &quot;installment&quot;: { # Number and amount of installments to pay for an item.
          &quot;amount&quot;: { # The amount the buyer has to pay per month.
            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
          },
          &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
        },
        &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
        &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
        &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
        &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
          &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
          &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
          &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
        },
        &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
        &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
        &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
        &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
        &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
        &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
        &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
        &quot;onlineOnly&quot;: True or False, # Deprecated.
        &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
        &quot;price&quot;: { # Price of the item.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
        &quot;promotionIds&quot;: [ # The unique ID of a promotion.
          &quot;A String&quot;,
        ],
        &quot;salePrice&quot;: { # Advertised sale price of the item.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
        &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
        &quot;shipping&quot;: [ # Shipping rules.
          {
            &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
            &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
            &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
            &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
            &quot;price&quot;: { # Fixed shipping price, represented as a number.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
            &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
          },
        ],
        &quot;shippingHeight&quot;: { # Height of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
        &quot;shippingLength&quot;: { # Length of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingWeight&quot;: { # Weight of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingWidth&quot;: { # Width of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
        &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
        &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
          &quot;A String&quot;,
        ],
        &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
        &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
        &quot;taxes&quot;: [ # Tax information.
          {
            &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
            &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
            &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
            &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
            &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
            &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
          },
        ],
        &quot;title&quot;: &quot;A String&quot;, # Title of the item.
        &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
          &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
        },
        &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
          &quot;value&quot;: 3.14, # The measure of an item.
        },
        &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
          &quot;A String&quot;,
        ],
        &quot;warnings&quot;: [ # Read-only warnings.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
      },
      &quot;productId&quot;: &quot;A String&quot;, # The ID of the product to get or delete. Only defined if the method is `get` or `delete`.
    },
  ],
}

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;entries&quot;: [ # The result of the execution of the batch requests.
    { # A batch entry encoding a single non-batch products response.
      &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
      &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
        &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
        &quot;errors&quot;: [ # A list of errors.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#productsCustomBatchResponseEntry`&quot;
      &quot;product&quot;: { #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect. # The inserted product. Only defined if the method is `insert` and if the request was successful.
        &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
          &quot;A String&quot;,
        ],
        &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
          &quot;A String&quot;,
        ],
        &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
        &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
        &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
          &quot;A String&quot;,
        ],
        &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
        &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
        &quot;aspects&quot;: [ # Deprecated. Do not use.
          {
            &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
            &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
            &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
          },
        ],
        &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
        &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
        &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
        &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
        &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
        &quot;color&quot;: &quot;A String&quot;, # Color of the item.
        &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
        &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
        &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
          {
            &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
            &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
            &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
            &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
          },
        ],
        &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
          {
            &quot;attributes&quot;: [ # The sub-attributes.
              {
                &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
                &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
                &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
                &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
          },
        ],
        &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
        &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
        &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
        &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
        &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
        &quot;description&quot;: &quot;A String&quot;, # Description of the item.
        &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
          {
            &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
            &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
          },
        ],
        &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
        &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
        &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
          &quot;A String&quot;,
        ],
        &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
        &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
        &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
        &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
        &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
        &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
        &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
        &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
        &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
        &quot;installment&quot;: { # Number and amount of installments to pay for an item.
          &quot;amount&quot;: { # The amount the buyer has to pay per month.
            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
          },
          &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
        },
        &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
        &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
        &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
        &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
          &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
          &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
          &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
        },
        &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
        &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
        &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
        &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
        &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
        &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
        &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
        &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
        &quot;onlineOnly&quot;: True or False, # Deprecated.
        &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
        &quot;price&quot;: { # Price of the item.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
        &quot;promotionIds&quot;: [ # The unique ID of a promotion.
          &quot;A String&quot;,
        ],
        &quot;salePrice&quot;: { # Advertised sale price of the item.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
        &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
        &quot;shipping&quot;: [ # Shipping rules.
          {
            &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
            &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
            &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
            &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
            &quot;price&quot;: { # Fixed shipping price, represented as a number.
              &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
              &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
            },
            &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
            &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
          },
        ],
        &quot;shippingHeight&quot;: { # Height of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
        &quot;shippingLength&quot;: { # Length of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingWeight&quot;: { # Weight of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
        },
        &quot;shippingWidth&quot;: { # Width of the item for shipping.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
          &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
        },
        &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
        &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
        &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
          &quot;A String&quot;,
        ],
        &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
        &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
        &quot;taxes&quot;: [ # Tax information.
          {
            &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
            &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
            &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
            &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
            &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
            &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
          },
        ],
        &quot;title&quot;: &quot;A String&quot;, # Title of the item.
        &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
          &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
        },
        &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
          &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
          &quot;value&quot;: 3.14, # The measure of an item.
        },
        &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
          &quot;A String&quot;,
        ],
        &quot;warnings&quot;: [ # Read-only warnings.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#productsCustomBatchResponse&quot;.
}</pre>
</div>

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

Args:
  merchantId: string, The ID of the account that contains the product. This account cannot be a multi-client account. (required)
  productId: string, The REST ID of the product. (required)
  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  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, productId, x__xgafv=None)</code>
  <pre>Retrieves a product from your Merchant Center account.

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

Returns:
  An object of the form:

    { #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect.
  &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
    &quot;A String&quot;,
  ],
  &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
    &quot;A String&quot;,
  ],
  &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
  &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
  &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
    &quot;A String&quot;,
  ],
  &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
  &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
  &quot;aspects&quot;: [ # Deprecated. Do not use.
    {
      &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
    },
  ],
  &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
  &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
  &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
  &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
  &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
  &quot;color&quot;: &quot;A String&quot;, # Color of the item.
  &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
  &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
  &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
    {
      &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
      &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
      &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
      &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
    },
  ],
  &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
    {
      &quot;attributes&quot;: [ # The sub-attributes.
        {
          &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
          &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
          &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
          &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
    },
  ],
  &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
  &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
  &quot;description&quot;: &quot;A String&quot;, # Description of the item.
  &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
    {
      &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
      &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
    },
  ],
  &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
  &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
  &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
    &quot;A String&quot;,
  ],
  &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
  &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
  &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
  &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
  &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
  &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
  &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
  &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
  &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
  &quot;installment&quot;: { # Number and amount of installments to pay for an item.
    &quot;amount&quot;: { # The amount the buyer has to pay per month.
      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
    },
    &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
  },
  &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
  &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
  &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
  &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
    &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
    &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
    &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
  },
  &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
  &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
  &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
  &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
  &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
  &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
  &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
  &quot;onlineOnly&quot;: True or False, # Deprecated.
  &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
  &quot;price&quot;: { # Price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
  &quot;promotionIds&quot;: [ # The unique ID of a promotion.
    &quot;A String&quot;,
  ],
  &quot;salePrice&quot;: { # Advertised sale price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
  &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
  &quot;shipping&quot;: [ # Shipping rules.
    {
      &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
      &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
      &quot;price&quot;: { # Fixed shipping price, represented as a number.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
      &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
    },
  ],
  &quot;shippingHeight&quot;: { # Height of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
  &quot;shippingLength&quot;: { # Length of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWeight&quot;: { # Weight of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWidth&quot;: { # Width of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
  &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
  &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
    &quot;A String&quot;,
  ],
  &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
  &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
  &quot;taxes&quot;: [ # Tax information.
    {
      &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
      &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
      &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Title of the item.
  &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
    &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
  },
  &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
    &quot;value&quot;: 3.14, # The measure of an item.
  },
  &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
    &quot;A String&quot;,
  ],
  &quot;warnings&quot;: [ # Read-only warnings.
    { # An error returned by the API.
      &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
      &quot;message&quot;: &quot;A String&quot;, # A description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # The error code.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Uploads a product to your Merchant Center account. If an item with the same channel, contentLanguage, offerId, and targetCountry already exists, this method updates that entry.

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

{ #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect.
  &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
    &quot;A String&quot;,
  ],
  &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
    &quot;A String&quot;,
  ],
  &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
  &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
  &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
    &quot;A String&quot;,
  ],
  &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
  &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
  &quot;aspects&quot;: [ # Deprecated. Do not use.
    {
      &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
    },
  ],
  &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
  &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
  &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
  &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
  &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
  &quot;color&quot;: &quot;A String&quot;, # Color of the item.
  &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
  &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
  &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
    {
      &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
      &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
      &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
      &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
    },
  ],
  &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
    {
      &quot;attributes&quot;: [ # The sub-attributes.
        {
          &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
          &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
          &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
          &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
    },
  ],
  &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
  &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
  &quot;description&quot;: &quot;A String&quot;, # Description of the item.
  &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
    {
      &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
      &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
    },
  ],
  &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
  &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
  &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
    &quot;A String&quot;,
  ],
  &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
  &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
  &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
  &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
  &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
  &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
  &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
  &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
  &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
  &quot;installment&quot;: { # Number and amount of installments to pay for an item.
    &quot;amount&quot;: { # The amount the buyer has to pay per month.
      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
    },
    &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
  },
  &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
  &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
  &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
  &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
    &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
    &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
    &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
  },
  &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
  &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
  &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
  &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
  &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
  &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
  &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
  &quot;onlineOnly&quot;: True or False, # Deprecated.
  &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
  &quot;price&quot;: { # Price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
  &quot;promotionIds&quot;: [ # The unique ID of a promotion.
    &quot;A String&quot;,
  ],
  &quot;salePrice&quot;: { # Advertised sale price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
  &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
  &quot;shipping&quot;: [ # Shipping rules.
    {
      &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
      &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
      &quot;price&quot;: { # Fixed shipping price, represented as a number.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
      &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
    },
  ],
  &quot;shippingHeight&quot;: { # Height of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
  &quot;shippingLength&quot;: { # Length of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWeight&quot;: { # Weight of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWidth&quot;: { # Width of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
  &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
  &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
    &quot;A String&quot;,
  ],
  &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
  &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
  &quot;taxes&quot;: [ # Tax information.
    {
      &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
      &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
      &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Title of the item.
  &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
    &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
  },
  &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
    &quot;value&quot;: 3.14, # The measure of an item.
  },
  &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
    &quot;A String&quot;,
  ],
  &quot;warnings&quot;: [ # Read-only warnings.
    { # An error returned by the API.
      &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
      &quot;message&quot;: &quot;A String&quot;, # A description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # The error code.
    },
  ],
}

  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect.
  &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
    &quot;A String&quot;,
  ],
  &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
    &quot;A String&quot;,
  ],
  &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
  &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
  &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
    &quot;A String&quot;,
  ],
  &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
  &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
  &quot;aspects&quot;: [ # Deprecated. Do not use.
    {
      &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
      &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
    },
  ],
  &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
  &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
  &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
  &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
  &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
  &quot;color&quot;: &quot;A String&quot;, # Color of the item.
  &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
  &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
  &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
    {
      &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
      &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
      &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
      &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
    },
  ],
  &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
    {
      &quot;attributes&quot;: [ # The sub-attributes.
        {
          &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
          &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
          &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
          &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
    },
  ],
  &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
  &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
  &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
  &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
  &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
  &quot;description&quot;: &quot;A String&quot;, # Description of the item.
  &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
    {
      &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
      &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
    },
  ],
  &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
  &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
  &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
    &quot;A String&quot;,
  ],
  &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
  &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
  &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
  &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
  &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
  &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
  &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
  &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
  &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
  &quot;installment&quot;: { # Number and amount of installments to pay for an item.
    &quot;amount&quot;: { # The amount the buyer has to pay per month.
      &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
      &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
    },
    &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
  },
  &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
  &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
  &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
  &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
    &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
    &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
    &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
  },
  &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
  &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
  &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
  &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
  &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
  &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
  &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
  &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
  &quot;onlineOnly&quot;: True or False, # Deprecated.
  &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
  &quot;price&quot;: { # Price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
  &quot;promotionIds&quot;: [ # The unique ID of a promotion.
    &quot;A String&quot;,
  ],
  &quot;salePrice&quot;: { # Advertised sale price of the item.
    &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
    &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
  },
  &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
  &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
  &quot;shipping&quot;: [ # Shipping rules.
    {
      &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
      &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
      &quot;price&quot;: { # Fixed shipping price, represented as a number.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
      &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
    },
  ],
  &quot;shippingHeight&quot;: { # Height of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
  &quot;shippingLength&quot;: { # Length of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWeight&quot;: { # Weight of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
  },
  &quot;shippingWidth&quot;: { # Width of the item for shipping.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
    &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
  },
  &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
  &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
  &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
    &quot;A String&quot;,
  ],
  &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
  &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
  &quot;taxes&quot;: [ # Tax information.
    {
      &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
      &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
      &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
      &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
      &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Title of the item.
  &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
    &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
  },
  &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
    &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
    &quot;value&quot;: 3.14, # The measure of an item.
  },
  &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
    &quot;A String&quot;,
  ],
  &quot;warnings&quot;: [ # Read-only warnings.
    { # An error returned by the API.
      &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
      &quot;message&quot;: &quot;A String&quot;, # A description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # The error code.
    },
  ],
}</pre>
</div>

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

Args:
  merchantId: string, The ID of the account that contains the products. This account cannot be a multi-client account. (required)
  includeInvalidInsertedItems: boolean, Flag to include the invalid inserted items in the result of the list request. By default the invalid items are not shown (the default value is false).
  maxResults: integer, The maximum number of products to return in the response, used for paging.
  pageToken: string, The token returned by the previous request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#productsListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of products.
  &quot;resources&quot;: [
    { #  Required product attributes are primarily defined by the products data specification. See the Products Data Specification Help Center article for information. Product data. After inserting, updating, or deleting a product, it may take several minutes before changes take effect.
      &quot;additionalImageLinks&quot;: [ # Additional URLs of images of the item.
        &quot;A String&quot;,
      ],
      &quot;additionalProductTypes&quot;: [ # Additional categories of the item (formatted as in products data specification).
        &quot;A String&quot;,
      ],
      &quot;adult&quot;: True or False, # Should be set to true if the item is targeted towards adults.
      &quot;adwordsGrouping&quot;: &quot;A String&quot;, # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
      &quot;adwordsLabels&quot;: [ # Similar to adwords_grouping, but only works on CPC.
        &quot;A String&quot;,
      ],
      &quot;adwordsRedirect&quot;: &quot;A String&quot;, # Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
      &quot;ageGroup&quot;: &quot;A String&quot;, # Target age group of the item. Acceptable values are: - &quot;`adult`&quot; - &quot;`infant`&quot; - &quot;`kids`&quot; - &quot;`newborn`&quot; - &quot;`toddler`&quot; - &quot;`youngAdult`&quot;
      &quot;aspects&quot;: [ # Deprecated. Do not use.
        {
          &quot;aspectName&quot;: &quot;A String&quot;, # Deprecated.
          &quot;destinationName&quot;: &quot;A String&quot;, # Deprecated.
          &quot;intention&quot;: &quot;A String&quot;, # Deprecated.
        },
      ],
      &quot;availability&quot;: &quot;A String&quot;, # Availability status of the item. Acceptable values are: - &quot;`in stock`&quot; - &quot;`out of stock`&quot; - &quot;`preorder`&quot;
      &quot;availabilityDate&quot;: &quot;A String&quot;, # The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
      &quot;brand&quot;: &quot;A String&quot;, # Brand of the item.
      &quot;canonicalLink&quot;: &quot;A String&quot;, # URL for the canonical version of your item&#x27;s landing page.
      &quot;channel&quot;: &quot;A String&quot;, # Required. The item&#x27;s channel (online or local). Acceptable values are: - &quot;`local`&quot; - &quot;`online`&quot;
      &quot;color&quot;: &quot;A String&quot;, # Color of the item.
      &quot;condition&quot;: &quot;A String&quot;, # Condition or state of the item. Acceptable values are: - &quot;`new`&quot; - &quot;`refurbished`&quot; - &quot;`used`&quot;
      &quot;contentLanguage&quot;: &quot;A String&quot;, # Required. The two-letter ISO 639-1 language code for the item.
      &quot;costOfGoodsSold&quot;: { # Cost of goods sold. Used for gross profit reporting.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;customAttributes&quot;: [ # A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (e.g., `{ &quot;name&quot;: &quot;size type&quot;, &quot;value&quot;: &quot;regular&quot; }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google (formerly known as Shopping Actions).
        {
          &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
          &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
          &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
          &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
        },
      ],
      &quot;customGroups&quot;: [ # A list of custom (merchant-provided) custom attribute groups.
        {
          &quot;attributes&quot;: [ # The sub-attributes.
            {
              &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. Underscores will be replaced by spaces upon insertion.
              &quot;type&quot;: &quot;A String&quot;, # The type of the attribute. Acceptable values are: - &quot;`boolean`&quot; - &quot;`datetimerange`&quot; - &quot;`float`&quot; - &quot;`group`&quot; - &quot;`int`&quot; - &quot;`price`&quot; - &quot;`text`&quot; - &quot;`time`&quot; - &quot;`url`&quot;
              &quot;unit&quot;: &quot;A String&quot;, # Free-form unit of the attribute. Unit can only be used for values of type int, float, or price.
              &quot;value&quot;: &quot;A String&quot;, # The value of the attribute.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The name of the group. Underscores will be replaced by spaces upon insertion.
        },
      ],
      &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of items in a Shopping campaign.
      &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of items in a Shopping campaign.
      &quot;customLabel2&quot;: &quot;A String&quot;, # Custom label 2 for custom grouping of items in a Shopping campaign.
      &quot;customLabel3&quot;: &quot;A String&quot;, # Custom label 3 for custom grouping of items in a Shopping campaign.
      &quot;customLabel4&quot;: &quot;A String&quot;, # Custom label 4 for custom grouping of items in a Shopping campaign.
      &quot;description&quot;: &quot;A String&quot;, # Description of the item.
      &quot;destinations&quot;: [ # Specifies the intended destinations for the product.
        {
          &quot;destinationName&quot;: &quot;A String&quot;, # The name of the destination.
          &quot;intention&quot;: &quot;A String&quot;, # Whether the destination is required, excluded or should be validated. Acceptable values are: - &quot;`default`&quot; - &quot;`excluded`&quot; - &quot;`optional`&quot; - &quot;`required`&quot;
        },
      ],
      &quot;displayAdsId&quot;: &quot;A String&quot;, # An identifier for an item for dynamic remarketing campaigns.
      &quot;displayAdsLink&quot;: &quot;A String&quot;, # URL directly to your item&#x27;s landing page for dynamic remarketing campaigns.
      &quot;displayAdsSimilarIds&quot;: [ # Advertiser-specified recommendations.
        &quot;A String&quot;,
      ],
      &quot;displayAdsTitle&quot;: &quot;A String&quot;, # Title of an item for dynamic remarketing campaigns.
      &quot;displayAdsValue&quot;: 3.14, # Offer margin for dynamic remarketing campaigns.
      &quot;energyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
      &quot;expirationDate&quot;: &quot;A String&quot;, # Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual expiration date in Google Shopping is exposed in `productstatuses` as `googleExpirationDate` and might be earlier if `expirationDate` is too far in the future.
      &quot;gender&quot;: &quot;A String&quot;, # Target gender of the item. Acceptable values are: - &quot;`female`&quot; - &quot;`male`&quot; - &quot;`unisex`&quot;
      &quot;googleProductCategory&quot;: &quot;A String&quot;, # Google&#x27;s category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.
      &quot;gtin&quot;: &quot;A String&quot;, # Global Trade Item Number (GTIN) of the item.
      &quot;id&quot;: &quot;A String&quot;, # The REST ID of the product. Content API methods that operate on products take this as their `productId` parameter. The REST ID for a product is of the form channel:contentLanguage: targetCountry: offerId.
      &quot;identifierExists&quot;: True or False, # False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
      &quot;imageLink&quot;: &quot;A String&quot;, # URL of an image of the item.
      &quot;installment&quot;: { # Number and amount of installments to pay for an item.
        &quot;amount&quot;: { # The amount the buyer has to pay per month.
          &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
          &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
        },
        &quot;months&quot;: &quot;A String&quot;, # The number of installments the buyer has to pay.
      },
      &quot;isBundle&quot;: True or False, # Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
      &quot;itemGroupId&quot;: &quot;A String&quot;, # Shared identifier for all variants of the same product.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#product`&quot;
      &quot;link&quot;: &quot;A String&quot;, # URL directly linking to your item&#x27;s page on your website.
      &quot;loyaltyPoints&quot;: { # Loyalty points that users receive after purchasing the item. Japan only.
        &quot;name&quot;: &quot;A String&quot;, # Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
        &quot;pointsValue&quot;: &quot;A String&quot;, # The retailer&#x27;s loyalty points in absolute value.
        &quot;ratio&quot;: 3.14, # The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
      },
      &quot;material&quot;: &quot;A String&quot;, # The material of which the item is made.
      &quot;maxEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
      &quot;maxHandlingTime&quot;: &quot;A String&quot;, # Maximal product handling time (in business days).
      &quot;minEnergyEfficiencyClass&quot;: &quot;A String&quot;, # The energy efficiency class as defined in EU directive 2010/30/EU. Acceptable values are: - &quot;`A`&quot; - &quot;`A+`&quot; - &quot;`A++`&quot; - &quot;`A+++`&quot; - &quot;`B`&quot; - &quot;`C`&quot; - &quot;`D`&quot; - &quot;`E`&quot; - &quot;`F`&quot; - &quot;`G`&quot;
      &quot;minHandlingTime&quot;: &quot;A String&quot;, # Minimal product handling time (in business days).
      &quot;mobileLink&quot;: &quot;A String&quot;, # URL for the mobile-optimized version of your item&#x27;s landing page.
      &quot;mpn&quot;: &quot;A String&quot;, # Manufacturer Part Number (MPN) of the item.
      &quot;multipack&quot;: &quot;A String&quot;, # The number of identical products in a merchant-defined multipack.
      &quot;offerId&quot;: &quot;A String&quot;, # Required. A unique identifier for the item. Leading and trailing whitespaces are stripped and multiple whitespaces are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the products feed specification for details. *Note:* Content API methods that operate on products take the REST ID of the product, *not* this identifier.
      &quot;onlineOnly&quot;: True or False, # Deprecated.
      &quot;pattern&quot;: &quot;A String&quot;, # The item&#x27;s pattern (e.g. polka dots).
      &quot;price&quot;: { # Price of the item.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;productType&quot;: &quot;A String&quot;, # Your category of the item (formatted as in products data specification).
      &quot;promotionIds&quot;: [ # The unique ID of a promotion.
        &quot;A String&quot;,
      ],
      &quot;salePrice&quot;: { # Advertised sale price of the item.
        &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
        &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
      },
      &quot;salePriceEffectiveDate&quot;: &quot;A String&quot;, # Date range during which the item is on sale (see products data specification ).
      &quot;sellOnGoogleQuantity&quot;: &quot;A String&quot;, # The quantity of the product that is available for selling on Google. Supported only for online products.
      &quot;shipping&quot;: [ # Shipping rules.
        {
          &quot;country&quot;: &quot;A String&quot;, # The CLDR territory code of the country to which an item will ship.
          &quot;locationGroupName&quot;: &quot;A String&quot;, # The location where the shipping is applicable, represented by a location group name.
          &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the shipping rate applies to as defined in the AdWords API.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the shipping rate applies to, represented by a postal code, a postal code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal length.
          &quot;price&quot;: { # Fixed shipping price, represented as a number.
            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
          },
          &quot;region&quot;: &quot;A String&quot;, # The geographic region to which a shipping rate applies.
          &quot;service&quot;: &quot;A String&quot;, # A free-form description of the service class or delivery speed.
        },
      ],
      &quot;shippingHeight&quot;: { # Height of the item for shipping.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
        &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
      },
      &quot;shippingLabel&quot;: &quot;A String&quot;, # The shipping label of the product, used to group product in account-level shipping rules.
      &quot;shippingLength&quot;: { # Length of the item for shipping.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
        &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
      },
      &quot;shippingWeight&quot;: { # Weight of the item for shipping.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
        &quot;value&quot;: 3.14, # The weight of the product used to calculate the shipping cost of the item.
      },
      &quot;shippingWidth&quot;: { # Width of the item for shipping.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of value.
        &quot;value&quot;: 3.14, # The dimension of the product used to calculate the shipping cost of the item.
      },
      &quot;sizeSystem&quot;: &quot;A String&quot;, # System in which the size is specified. Recommended for apparel items. Acceptable values are: - &quot;`AU`&quot; - &quot;`BR`&quot; - &quot;`CN`&quot; - &quot;`DE`&quot; - &quot;`EU`&quot; - &quot;`FR`&quot; - &quot;`IT`&quot; - &quot;`JP`&quot; - &quot;`MEX`&quot; - &quot;`UK`&quot; - &quot;`US`&quot;
      &quot;sizeType&quot;: &quot;A String&quot;, # The cut of the item. Recommended for apparel items. Acceptable values are: - &quot;`big and tall`&quot; - &quot;`maternity`&quot; - &quot;`oversize`&quot; - &quot;`petite`&quot; - &quot;`plus`&quot; - &quot;`regular`&quot;
      &quot;sizes&quot;: [ # Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see size definition).
        &quot;A String&quot;,
      ],
      &quot;source&quot;: &quot;A String&quot;, # The source of the offer, i.e., how the offer was created. Acceptable values are: - &quot;`api`&quot; - &quot;`crawl`&quot; - &quot;`feed`&quot;
      &quot;targetCountry&quot;: &quot;A String&quot;, # Required. The CLDR territory code for the item.
      &quot;taxes&quot;: [ # Tax information.
        {
          &quot;country&quot;: &quot;A String&quot;, # The country within which the item is taxed, specified as a CLDR territory code.
          &quot;locationId&quot;: &quot;A String&quot;, # The numeric ID of a location that the tax rate applies to as defined in the AdWords API.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
          &quot;rate&quot;: 3.14, # The percentage of tax rate that applies to the item price.
          &quot;region&quot;: &quot;A String&quot;, # The geographic region to which the tax rate applies.
          &quot;taxShip&quot;: True or False, # Should be set to true if tax is charged on shipping.
        },
      ],
      &quot;title&quot;: &quot;A String&quot;, # Title of the item.
      &quot;unitPricingBaseMeasure&quot;: { # The preference of the denominator of the unit price.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of the denominator.
        &quot;value&quot;: &quot;A String&quot;, # The denominator of the unit price.
      },
      &quot;unitPricingMeasure&quot;: { # The measure and dimension of an item.
        &quot;unit&quot;: &quot;A String&quot;, # The unit of the measure.
        &quot;value&quot;: 3.14, # The measure of an item.
      },
      &quot;validatedDestinations&quot;: [ # Deprecated. The read-only list of intended destinations which passed validation.
        &quot;A String&quot;,
      ],
      &quot;warnings&quot;: [ # Read-only warnings.
        { # An error returned by the API.
          &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
          &quot;message&quot;: &quot;A String&quot;, # A description of the error.
          &quot;reason&quot;: &quot;A String&quot;, # The error code.
        },
      ],
    },
  ],
}</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>