<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.</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.</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.

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.

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>