<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.datafeedstatuses.html">datafeedstatuses</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#custombatch">custombatch(body)</a></code></p>
<p class="firstline">A description of how to use this function</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, datafeedId)</a></code></p>
<p class="firstline">Retrieves the status of a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.</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="custombatch">custombatch(body)</code>
  <pre>A description of how to use this function

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

{
    "entries": [ # The request entries to be processed in the batch.
      { # A batch entry encoding a single non-batch datafeedstatuses request.
        "batchId": 42, # An entry ID, unique within the batch request.
        "datafeedId": "A String", # The ID of the data feed to get or delete.
        "merchantId": "A String", # The ID of the managing account.
        "method": "A String",
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#datafeedstatusesCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#datafeedstatusesCustomBatchResponse".
    "entries": [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch datafeedstatuses response.
        "batchId": 42, # The ID of the request entry this entry responds to.
        "errors": { # A list of errors returned by a failed batch entry. # A list of errors defined if and only if the request failed.
          "message": "A String", # The message of the first error in errors.
          "code": 42, # The HTTP status of the first error in errors.
          "errors": [ # A list of errors.
            { # An error returned by the API.
              "reason": "A String", # The error code.
              "domain": "A String", # The domain of the error.
              "message": "A String", # A description of the error.
            },
          ],
        },
        "datafeedStatus": { # 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.
          "kind": "content#datafeedStatus", # Identifies what kind of resource this is. Value: the fixed string "content#datafeedStatus".
          "errors": [ # The list of errors occurring in the feed.
            { # An error occurring in the feed, like "invalid price".
              "count": "A String", # The number of occurrences of the error in the feed.
              "message": "A String", # The error message, e.g., "Invalid price".
              "code": "A String", # The code of the error, e.g., "validation/invalid_value".
              "examples": [ # A list of example occurrences of the error, grouped by product.
                { # An example occurrence for a particular error.
                  "itemId": "A String", # The ID of the example item.
                  "value": "A String", # The problematic value.
                  "lineNumber": "A String", # Line number in the data feed where the example is found.
                },
              ],
            },
          ],
          "processingStatus": "A String", # The processing status of the feed.
          "itemsTotal": "A String", # The number of items in the feed that were processed.
          "warnings": [ # The list of errors occurring in the feed.
            { # An error occurring in the feed, like "invalid price".
              "count": "A String", # The number of occurrences of the error in the feed.
              "message": "A String", # The error message, e.g., "Invalid price".
              "code": "A String", # The code of the error, e.g., "validation/invalid_value".
              "examples": [ # A list of example occurrences of the error, grouped by product.
                { # An example occurrence for a particular error.
                  "itemId": "A String", # The ID of the example item.
                  "value": "A String", # The problematic value.
                  "lineNumber": "A String", # Line number in the data feed where the example is found.
                },
              ],
            },
          ],
          "lastUploadDate": "A String", # The last date at which the feed was uploaded.
          "itemsValid": "A String", # The number of items in the feed that were valid.
          "datafeedId": "A String", # The ID of the feed for which the status is reported.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, datafeedId)</code>
  <pre>Retrieves the status of a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, A parameter (required)
  datafeedId: string, A parameter (required)

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.
    "kind": "content#datafeedStatus", # Identifies what kind of resource this is. Value: the fixed string "content#datafeedStatus".
    "errors": [ # The list of errors occurring in the feed.
      { # An error occurring in the feed, like "invalid price".
        "count": "A String", # The number of occurrences of the error in the feed.
        "message": "A String", # The error message, e.g., "Invalid price".
        "code": "A String", # The code of the error, e.g., "validation/invalid_value".
        "examples": [ # A list of example occurrences of the error, grouped by product.
          { # An example occurrence for a particular error.
            "itemId": "A String", # The ID of the example item.
            "value": "A String", # The problematic value.
            "lineNumber": "A String", # Line number in the data feed where the example is found.
          },
        ],
      },
    ],
    "processingStatus": "A String", # The processing status of the feed.
    "itemsTotal": "A String", # The number of items in the feed that were processed.
    "warnings": [ # The list of errors occurring in the feed.
      { # An error occurring in the feed, like "invalid price".
        "count": "A String", # The number of occurrences of the error in the feed.
        "message": "A String", # The error message, e.g., "Invalid price".
        "code": "A String", # The code of the error, e.g., "validation/invalid_value".
        "examples": [ # A list of example occurrences of the error, grouped by product.
          { # An example occurrence for a particular error.
            "itemId": "A String", # The ID of the example item.
            "value": "A String", # The problematic value.
            "lineNumber": "A String", # Line number in the data feed where the example is found.
          },
        ],
      },
    ],
    "lastUploadDate": "A String", # The last date at which the feed was uploaded.
    "itemsValid": "A String", # The number of items in the feed that were valid.
    "datafeedId": "A String", # The ID of the feed for which the status is reported.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
  <pre>Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. (required)
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of products to return in the response, used for paging.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # The token for the retrieval of the next page of datafeed statuses.
    "kind": "content#datafeedstatusesListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#datafeedstatusesListResponse".
    "resources": [
      { # The status of a datafeed, i.e., the result of the last retrieval of the datafeed computed asynchronously when the feed processing is finished.
        "kind": "content#datafeedStatus", # Identifies what kind of resource this is. Value: the fixed string "content#datafeedStatus".
        "errors": [ # The list of errors occurring in the feed.
          { # An error occurring in the feed, like "invalid price".
            "count": "A String", # The number of occurrences of the error in the feed.
            "message": "A String", # The error message, e.g., "Invalid price".
            "code": "A String", # The code of the error, e.g., "validation/invalid_value".
            "examples": [ # A list of example occurrences of the error, grouped by product.
              { # An example occurrence for a particular error.
                "itemId": "A String", # The ID of the example item.
                "value": "A String", # The problematic value.
                "lineNumber": "A String", # Line number in the data feed where the example is found.
              },
            ],
          },
        ],
        "processingStatus": "A String", # The processing status of the feed.
        "itemsTotal": "A String", # The number of items in the feed that were processed.
        "warnings": [ # The list of errors occurring in the feed.
          { # An error occurring in the feed, like "invalid price".
            "count": "A String", # The number of occurrences of the error in the feed.
            "message": "A String", # The error message, e.g., "Invalid price".
            "code": "A String", # The code of the error, e.g., "validation/invalid_value".
            "examples": [ # A list of example occurrences of the error, grouped by product.
              { # An example occurrence for a particular error.
                "itemId": "A String", # The ID of the example item.
                "value": "A String", # The problematic value.
                "lineNumber": "A String", # Line number in the data feed where the example is found.
              },
            ],
          },
        ],
        "lastUploadDate": "A String", # The last date at which the feed was uploaded.
        "itemsValid": "A String", # The number of items in the feed that were valid.
        "datafeedId": "A String", # The ID of the feed for which the status is reported.
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>