<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.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, 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, 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, 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, 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, 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, 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;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;`fetchNow`&quot; - &quot;`get`&quot; - &quot;`insert`&quot; - &quot;`update`&quot;
        &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the data feed to get, delete or fetch.
        &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
        &quot;datafeed&quot;: { # Datafeed configuration data. # The data feed to insert.
          &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
            {
              &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
          &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
          &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
          &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
            &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
            &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
            &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
          &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
        },
      },
    ],
  }

  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;batchId&quot;: 42, # The ID of the request entry this entry responds to.
        &quot;datafeed&quot;: { # Datafeed configuration data. # The requested data feed. Defined if and only if the request was successful.
          &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
            {
              &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
          &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
          &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
          &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
            &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
            &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
            &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
          &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
        },
        &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;message&quot;: &quot;A String&quot;, # A description of the error.
              &quot;domain&quot;: &quot;A String&quot;, # The domain 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, 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)
  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, 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)
  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;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
      &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(merchantId, body=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;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
    {
      &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
  &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
  &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
  &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
    &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
    &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
    &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
  &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
}

  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;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
      &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
  }</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;resources&quot;: [
      { # Datafeed configuration data.
        &quot;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
          {
            &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
        &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
        &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
        &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
          &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
          &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
          &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
        &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#datafeedsListResponse&quot;.
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="update">update(merchantId, datafeedId, body=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;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
    {
      &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
  &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
  &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
  &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
    &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
    &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
    &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
  &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
}

  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;targets&quot;: [ # The targets this feed should apply to (country, language, destinations).
      {
        &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;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;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;name&quot;: &quot;A String&quot;, # Required for insert. A descriptive name of the data feed.
    &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeed`&quot;
    &quot;id&quot;: &quot;A String&quot;, # Required for update. The ID of the data feed.
    &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;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;timeZone&quot;: &quot;A String&quot;, # Time zone used for schedule. UTC by default. E.g., &quot;America/Los_Angeles&quot;.
      &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;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;password&quot;: &quot;A String&quot;, # An optional password for fetch_url.
      &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;dayOfMonth&quot;: 42, # The day of the month the feed file should be fetched (1-31).
      &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;attributeLanguage&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language in which the attributes are defined in the data feed.
    &quot;fileName&quot;: &quot;A String&quot;, # Required. The filename of the feed. All feeds must have a unique file name.
  }</pre>
</div>

</body></html>