<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="#custombatch">custombatch(body)</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, language=None, country=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, 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>Gets multiple Merchant Center datafeed statuses in a single request.

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.
        "language": "A String", # 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.
        "country": "A String", # 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.
        "merchantId": "A String", # The ID of the managing account.
        "batchId": 42, # An entry ID, unique within the batch request.
        "datafeedId": "A String", # The ID of the data feed to get.
        "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.
                },
              ],
            },
          ],
          "language": "A String", # The two-letter ISO 639-1 language for which the status is reported.
          "processingStatus": "A String", # The processing status of the feed.
          "itemsTotal": "A String", # The number of items in the feed that were processed.
          "country": "A String", # The country for which the status is reported, represented as a  CLDR territory code.
          "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, language=None, country=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)
  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.
  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.

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.
          },
        ],
      },
    ],
    "language": "A String", # The two-letter ISO 639-1 language for which the status is reported.
    "processingStatus": "A String", # The processing status of the feed.
    "itemsTotal": "A String", # The number of items in the feed that were processed.
    "country": "A String", # The country for which the status is reported, represented as a  CLDR territory code.
    "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 account that manages the datafeeds. This account cannot be a multi-client 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.
              },
            ],
          },
        ],
        "language": "A String", # The two-letter ISO 639-1 language for which the status is reported.
        "processingStatus": "A String", # The processing status of the feed.
        "itemsTotal": "A String", # The number of items in the feed that were processed.
        "country": "A String", # The country for which the status is reported, represented as a  CLDR territory code.
        "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>