<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.datafeeds.html">datafeeds</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">Deletes, fetches, gets, inserts and updates multiple datafeeds in a single request.</p>
<p class="toc_element">
  <code><a href="#delete">delete(merchantId, datafeedId, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a datafeed configuration from your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#fetchnow">fetchnow(merchantId, datafeedId, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Invokes a fetch for the datafeed in your Merchant Center account. If you need to call this method more than once per day, we recommend you use the Products service to update your product data.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, datafeedId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a datafeed configuration 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">Registers a datafeed configuration with your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the configurations for datafeeds in your Merchant Center account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(merchantId, datafeedId, body=None, dryRun=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a datafeed configuration of your Merchant Center account. Any fields that are not provided are deleted from the resource.</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>Deletes, fetches, gets, inserts and updates multiple datafeeds 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 datafeeds request.
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;method&quot;: &quot;A String&quot;, # The method of the batch entry. Acceptable values are: - &quot;`delete`&quot; - &quot;`fetchNow`&quot; - &quot;`get`&quot; - &quot;`insert`&quot; - &quot;`update`&quot;
        &quot;datafeed&quot;: { # Datafeed configuration data. # The data feed to insert.
          &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
          &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
            &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
            &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
            &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
            &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
            &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
            &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
            &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
            &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
            &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
          },
          &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
            &quot;A String&quot;,
          ],
          &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
          &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
          &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
          &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
          &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
          &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
            {
              &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
                &quot;A String&quot;,
              ],
              &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
              &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
              &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
          &quot;format&quot;: { # Format of the feed file.
            &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
            &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
            &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
          },
          &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
        },
        &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the data feed to get, delete or fetch.
        &quot;merchantId&quot;: &quot;A String&quot;, # The ID of the managing account.
      },
    ],
  }

  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 datafeeds response.
        &quot;datafeed&quot;: { # Datafeed configuration data. # The requested data feed. Defined if and only if the request was successful.
          &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
          &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
            &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
            &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
            &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
            &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
            &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
            &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
            &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
            &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
            &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
          },
          &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
            &quot;A String&quot;,
          ],
          &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
          &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
          &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
          &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
          &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
          &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
            {
              &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
                &quot;A String&quot;,
              ],
              &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
              &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
              &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
          &quot;format&quot;: { # Format of the feed file.
            &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
            &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
            &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
          },
          &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
        },
        &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;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;code&quot;: 42, # The HTTP status 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#datafeedsCustomBatchResponse&quot;.
  }</pre>
</div>

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

Args:
  merchantId: string, The ID of the account that manages the datafeed. This account cannot be a multi-client account. (required)
  datafeedId: string, The ID of the datafeed. (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="fetchnow">fetchnow(merchantId, datafeedId, dryRun=None, x__xgafv=None)</code>
  <pre>Invokes a fetch for the datafeed in your Merchant Center account. If you need to call this method more than once per day, we recommend you use the Products service to update your product data.

Args:
  merchantId: string, The ID of the account that manages the datafeed. This account cannot be a multi-client account. (required)
  datafeedId: string, The ID of the datafeed to be fetched. (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

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#datafeedsFetchNowResponse&quot;.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # Datafeed configuration data.
    &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
    &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
      &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
      &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
      &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
      &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
      &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
      &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
      &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
    },
    &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
      &quot;A String&quot;,
    ],
    &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
    &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
          &quot;A String&quot;,
        ],
        &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
        &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
        &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;format&quot;: { # Format of the feed file.
      &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
      &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
      &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
    },
    &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Registers a datafeed configuration with your Merchant Center account.

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

{ # Datafeed configuration data.
  &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
  &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
    &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
    &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
    &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
    &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
    &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
    &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
    &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
    &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
    &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
  },
  &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
    &quot;A String&quot;,
  ],
  &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
  &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
  &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
  &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
  &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
  &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
    {
      &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
        &quot;A String&quot;,
      ],
      &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
      &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
      &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
  &quot;format&quot;: { # Format of the feed file.
    &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
    &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
    &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
  },
  &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
}

  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:

    { # Datafeed configuration data.
    &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
    &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
      &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
      &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
      &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
      &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
      &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
      &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
      &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
    },
    &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
      &quot;A String&quot;,
    ],
    &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
    &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
          &quot;A String&quot;,
        ],
        &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
        &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
        &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;format&quot;: { # Format of the feed file.
      &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
      &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
      &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
    },
    &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
  }</pre>
</div>

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

Args:
  merchantId: string, The ID of the account that manages the datafeeds. This account cannot be a multi-client account. (required)
  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;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of datafeeds.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#datafeedsListResponse&quot;.
    &quot;resources&quot;: [
      { # Datafeed configuration data.
        &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
        &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
          &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
          &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
          &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
          &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
          &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
          &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
          &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
          &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
          &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
        },
        &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
          &quot;A String&quot;,
        ],
        &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
        &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
        &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
        &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
        &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
        &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
          {
            &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
              &quot;A String&quot;,
            ],
            &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
            &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
            &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
        &quot;format&quot;: { # Format of the feed file.
          &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
          &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
          &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
        },
        &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
      },
    ],
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="update">update(merchantId, datafeedId, body=None, dryRun=None, x__xgafv=None)</code>
  <pre>Updates a datafeed configuration of your Merchant Center account. Any fields that are not provided are deleted from the resource.

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

{ # Datafeed configuration data.
  &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
  &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
    &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
    &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
    &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
    &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
    &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
    &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
    &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
    &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
    &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
  },
  &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
    &quot;A String&quot;,
  ],
  &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
  &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
  &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
  &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
  &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
  &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
    {
      &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
        &quot;A String&quot;,
      ],
      &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
      &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
      &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
  &quot;format&quot;: { # Format of the feed file.
    &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
    &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
    &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
  },
  &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
}

  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:

    { # Datafeed configuration data.
    &quot;targetCountry&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
    &quot;fetchSchedule&quot;: { # The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule, only hour is required. # Fetch schedule for the feed file.
      &quot;fetchUrl&quot;: &quot;A String&quot;, # The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one of those four protocols.
      &quot;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &quot;weekday&quot;: &quot;A String&quot;, # The day of the week the feed file should be fetched. Acceptable values are: - &quot;`monday`&quot; - &quot;`tuesday`&quot; - &quot;`wednesday`&quot; - &quot;`thursday`&quot; - &quot;`friday`&quot; - &quot;`saturday`&quot; - &quot;`sunday`&quot;
      &quot;username&quot;: &quot;A String&quot;, # An optional user name for fetch_url.
      &quot;hour&quot;: 42, # The hour of the day the feed file should be fetched (0-23).
      &quot;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &quot;minuteOfHour&quot;: 42, # The minute of the hour the feed file should be fetched (0-59). Read-only.
      &quot;paused&quot;: True or False, # Whether the scheduled fetch is paused or not.
      &quot;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
    },
    &quot;intendedDestinations&quot;: [ # [DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).
      &quot;A String&quot;,
    ],
    &quot;contentType&quot;: &quot;A String&quot;, # Required. The type of data feed. For product inventory feeds, only feeds for local stores, not online stores, are supported. Acceptable values are: - &quot;`local products`&quot; - &quot;`product inventory`&quot; - &quot;`products`&quot;
    &quot;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &quot;contentLanguage&quot;: &quot;A String&quot;, # [DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targetCountry`.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &quot;includedDestinations&quot;: [ # The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`. List of supported destinations (if available to the account): - DisplayAds - Shopping - ShoppingActions - SurfacesAcrossGoogle
          &quot;A String&quot;,
        ],
        &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for `targets[].country`.
        &quot;country&quot;: &quot;A String&quot;, # The country where the items in the feed will be included in the search index, represented as a CLDR territory code.
        &quot;excludedDestinations&quot;: [ # The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;format&quot;: { # Format of the feed file.
      &quot;fileEncoding&quot;: &quot;A String&quot;, # Character encoding scheme of the data feed. If not specified, the encoding will be auto-detected. Acceptable values are: - &quot;`latin-1`&quot; - &quot;`utf-16be`&quot; - &quot;`utf-16le`&quot; - &quot;`utf-8`&quot; - &quot;`windows-1252`&quot;
      &quot;quotingMode&quot;: &quot;A String&quot;, # Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`normal character`&quot; - &quot;`value quoting`&quot;
      &quot;columnDelimiter&quot;: &quot;A String&quot;, # Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the delimiter will be auto-detected. Ignored for non-DSV data feeds. Acceptable values are: - &quot;`pipe`&quot; - &quot;`tab`&quot; - &quot;`tilde`&quot;
    },
    &quot;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
  }</pre>
</div>

</body></html>