<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.datafeedstatuses.html">datafeedstatuses</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">Gets multiple Merchant Center datafeed statuses in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, datafeedId, country=None, language=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the status of a datafeed from 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 statuses of the 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>
<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>Gets multiple Merchant Center datafeed statuses 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 datafeedstatuses request.
      &quot;batchId&quot;: 42, # An entry ID, unique within the batch request.
      &quot;country&quot;: &quot;A String&quot;, # The country for which to get the datafeed status. If this parameter is provided then language must also be provided. Note that for multi-target datafeeds this parameter is required.
      &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the data feed to get.
      &quot;language&quot;: &quot;A String&quot;, # The language for which to get the datafeed status. If this parameter is provided then country must also be provided. Note that for multi-target datafeeds this parameter is required.
      &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;`get`&quot;
    },
  ],
}

  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 datafeedstatuses response.
      &quot;batchId&quot;: 42, # The ID of the request entry this entry responds to.
      &quot;datafeedStatus&quot;: { # The status of a datafeed, i.e., the result of the last retrieval of the datafeed computed asynchronously when the feed processing is finished. # The requested data feed status. Defined if and only if the request was successful.
        &quot;country&quot;: &quot;A String&quot;, # The country for which the status is reported, represented as a CLDR territory code.
        &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the feed for which the status is reported.
        &quot;errors&quot;: [ # The list of errors occurring in the feed.
          { # An error occurring in the feed, like &quot;invalid price&quot;.
            &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
            &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
            &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
              { # An example occurrence for a particular error.
                &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
                &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
                &quot;value&quot;: &quot;A String&quot;, # The problematic value.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&quot;.
          },
        ],
        &quot;itemsTotal&quot;: &quot;A String&quot;, # The number of items in the feed that were processed.
        &quot;itemsValid&quot;: &quot;A String&quot;, # The number of items in the feed that were valid.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeedStatus`&quot;
        &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language for which the status is reported.
        &quot;lastUploadDate&quot;: &quot;A String&quot;, # The last date at which the feed was uploaded.
        &quot;processingStatus&quot;: &quot;A String&quot;, # The processing status of the feed. Acceptable values are: - &quot;`&quot;`failure`&quot;: The feed could not be processed or all items had errors.`&quot; - &quot;`in progress`&quot;: The feed is being processed. - &quot;`none`&quot;: The feed has not yet been processed. For example, a feed that has never been uploaded will have this processing status. - &quot;`success`&quot;: The feed was processed successfully, though some items might have had errors.
        &quot;warnings&quot;: [ # The list of errors occurring in the feed.
          { # An error occurring in the feed, like &quot;invalid price&quot;.
            &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
            &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
            &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
              { # An example occurrence for a particular error.
                &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
                &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
                &quot;value&quot;: &quot;A String&quot;, # The problematic value.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&quot;.
          },
        ],
      },
      &quot;errors&quot;: { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
        &quot;code&quot;: 42, # The HTTP status of the first error in `errors`.
        &quot;errors&quot;: [ # A list of errors.
          { # An error returned by the API.
            &quot;domain&quot;: &quot;A String&quot;, # The domain of the error.
            &quot;message&quot;: &quot;A String&quot;, # A description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # The error code.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # The message of the first error in `errors`.
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeedstatusesCustomBatchResponse`&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, datafeedId, country=None, language=None, x__xgafv=None)</code>
  <pre>Retrieves the status of a datafeed 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)
  country: string, The country for which to get the datafeed status. If this parameter is provided then language must also be provided. Note that this parameter is required for feeds targeting multiple countries and languages, since a feed may have a different status for each target.
  language: string, The language for which to get the datafeed status. If this parameter is provided then country must also be provided. Note that this parameter is required for feeds targeting multiple countries and languages, since a feed may have a different status for each target.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The status of a datafeed, i.e., the result of the last retrieval of the datafeed computed asynchronously when the feed processing is finished.
  &quot;country&quot;: &quot;A String&quot;, # The country for which the status is reported, represented as a CLDR territory code.
  &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the feed for which the status is reported.
  &quot;errors&quot;: [ # The list of errors occurring in the feed.
    { # An error occurring in the feed, like &quot;invalid price&quot;.
      &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
      &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
      &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
        { # An example occurrence for a particular error.
          &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
          &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
          &quot;value&quot;: &quot;A String&quot;, # The problematic value.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&quot;.
    },
  ],
  &quot;itemsTotal&quot;: &quot;A String&quot;, # The number of items in the feed that were processed.
  &quot;itemsValid&quot;: &quot;A String&quot;, # The number of items in the feed that were valid.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeedStatus`&quot;
  &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language for which the status is reported.
  &quot;lastUploadDate&quot;: &quot;A String&quot;, # The last date at which the feed was uploaded.
  &quot;processingStatus&quot;: &quot;A String&quot;, # The processing status of the feed. Acceptable values are: - &quot;`&quot;`failure`&quot;: The feed could not be processed or all items had errors.`&quot; - &quot;`in progress`&quot;: The feed is being processed. - &quot;`none`&quot;: The feed has not yet been processed. For example, a feed that has never been uploaded will have this processing status. - &quot;`success`&quot;: The feed was processed successfully, though some items might have had errors.
  &quot;warnings&quot;: [ # The list of errors occurring in the feed.
    { # An error occurring in the feed, like &quot;invalid price&quot;.
      &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
      &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
      &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
        { # An example occurrence for a particular error.
          &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
          &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
          &quot;value&quot;: &quot;A String&quot;, # The problematic value.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&quot;.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the statuses of the 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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeedstatusesListResponse`&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of datafeed statuses.
  &quot;resources&quot;: [
    { # The status of a datafeed, i.e., the result of the last retrieval of the datafeed computed asynchronously when the feed processing is finished.
      &quot;country&quot;: &quot;A String&quot;, # The country for which the status is reported, represented as a CLDR territory code.
      &quot;datafeedId&quot;: &quot;A String&quot;, # The ID of the feed for which the status is reported.
      &quot;errors&quot;: [ # The list of errors occurring in the feed.
        { # An error occurring in the feed, like &quot;invalid price&quot;.
          &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
          &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
          &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
            { # An example occurrence for a particular error.
              &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
              &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
              &quot;value&quot;: &quot;A String&quot;, # The problematic value.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&quot;.
        },
      ],
      &quot;itemsTotal&quot;: &quot;A String&quot;, # The number of items in the feed that were processed.
      &quot;itemsValid&quot;: &quot;A String&quot;, # The number of items in the feed that were valid.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#datafeedStatus`&quot;
      &quot;language&quot;: &quot;A String&quot;, # The two-letter ISO 639-1 language for which the status is reported.
      &quot;lastUploadDate&quot;: &quot;A String&quot;, # The last date at which the feed was uploaded.
      &quot;processingStatus&quot;: &quot;A String&quot;, # The processing status of the feed. Acceptable values are: - &quot;`&quot;`failure`&quot;: The feed could not be processed or all items had errors.`&quot; - &quot;`in progress`&quot;: The feed is being processed. - &quot;`none`&quot;: The feed has not yet been processed. For example, a feed that has never been uploaded will have this processing status. - &quot;`success`&quot;: The feed was processed successfully, though some items might have had errors.
      &quot;warnings&quot;: [ # The list of errors occurring in the feed.
        { # An error occurring in the feed, like &quot;invalid price&quot;.
          &quot;code&quot;: &quot;A String&quot;, # The code of the error, e.g., &quot;validation/invalid_value&quot;.
          &quot;count&quot;: &quot;A String&quot;, # The number of occurrences of the error in the feed.
          &quot;examples&quot;: [ # A list of example occurrences of the error, grouped by product.
            { # An example occurrence for a particular error.
              &quot;itemId&quot;: &quot;A String&quot;, # The ID of the example item.
              &quot;lineNumber&quot;: &quot;A String&quot;, # Line number in the data feed where the example is found.
              &quot;value&quot;: &quot;A String&quot;, # The problematic value.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # The error message, e.g., &quot;Invalid price&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>

</body></html>