<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.accountstatuses.html">accountstatuses</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, accountId)</a></code></p>
<p class="firstline">Retrieves the status of a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client 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 sub-accounts in your Merchant Center account. This method can only be called for 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 accountstatuses request.
        "batchId": 42, # An entry ID, unique within the batch request.
        "method": "A String", # The method (get).
        "merchantId": "A String", # The ID of the managing account.
        "accountId": "A String", # The ID of the (sub-)account whose status to get.
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#accountstatusesCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accountstatusesCustomBatchResponse".
    "entries": [ # The result of the execution of the batch requests.
      { # A batch entry encoding a single non-batch accountstatuses 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.
            },
          ],
        },
        "accountStatus": { # The status of an account, i.e., information about its products, which is computed offline and not returned immediately at insertion time. # The requested account status. Defined if and only if the request was successful.
          "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
          "dataQualityIssues": [ # A list of data quality issues.
            {
              "displayedValue": "A String", # Actual value displayed on the landing page.
              "severity": "A String", # Severity of the problem.
              "lastChecked": "A String", # Last time the account was checked for this issue.
              "country": "A String", # Country for which this issue is reported.
              "exampleItems": [ # Example items featuring the issue.
                { # An example of an item that has poor data quality. An item value on the landing page differs from what is submitted, or conflicts with a policy.
                  "itemId": "A String", # Unique item ID as specified in the uploaded product data.
                  "submittedValue": "A String", # The item value that was submitted.
                  "link": "A String", # Landing page of the item.
                  "valueOnLandingPage": "A String", # The actual value on the landing page.
                  "title": "A String", # Title of the item.
                },
              ],
              "submittedValue": "A String", # Submitted value that causes the issue.
              "numItems": 42, # Number of items in the account found to have the said issue.
              "id": "A String", # Issue identifier.
            },
          ],
          "accountId": "A String", # The ID of the account for which the status is reported.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(merchantId, accountId)</code>
  <pre>Retrieves the status of a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.

Args:
  merchantId: string, The ID of the managing account. (required)
  accountId: string, The ID of the account. (required)

Returns:
  An object of the form:

    { # The status of an account, i.e., information about its products, which is computed offline and not returned immediately at insertion time.
    "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
    "dataQualityIssues": [ # A list of data quality issues.
      {
        "displayedValue": "A String", # Actual value displayed on the landing page.
        "severity": "A String", # Severity of the problem.
        "lastChecked": "A String", # Last time the account was checked for this issue.
        "country": "A String", # Country for which this issue is reported.
        "exampleItems": [ # Example items featuring the issue.
          { # An example of an item that has poor data quality. An item value on the landing page differs from what is submitted, or conflicts with a policy.
            "itemId": "A String", # Unique item ID as specified in the uploaded product data.
            "submittedValue": "A String", # The item value that was submitted.
            "link": "A String", # Landing page of the item.
            "valueOnLandingPage": "A String", # The actual value on the landing page.
            "title": "A String", # Title of the item.
          },
        ],
        "submittedValue": "A String", # Submitted value that causes the issue.
        "numItems": 42, # Number of items in the account found to have the said issue.
        "id": "A String", # Issue identifier.
      },
    ],
    "accountId": "A String", # The ID of the account 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 sub-accounts in your Merchant Center account. This method can only be called for 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 account statuses 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 account statuses.
    "kind": "content#accountstatusesListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#accountstatusesListResponse".
    "resources": [
      { # The status of an account, i.e., information about its products, which is computed offline and not returned immediately at insertion time.
        "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
        "dataQualityIssues": [ # A list of data quality issues.
          {
            "displayedValue": "A String", # Actual value displayed on the landing page.
            "severity": "A String", # Severity of the problem.
            "lastChecked": "A String", # Last time the account was checked for this issue.
            "country": "A String", # Country for which this issue is reported.
            "exampleItems": [ # Example items featuring the issue.
              { # An example of an item that has poor data quality. An item value on the landing page differs from what is submitted, or conflicts with a policy.
                "itemId": "A String", # Unique item ID as specified in the uploaded product data.
                "submittedValue": "A String", # The item value that was submitted.
                "link": "A String", # Landing page of the item.
                "valueOnLandingPage": "A String", # The actual value on the landing page.
                "title": "A String", # Title of the item.
              },
            ],
            "submittedValue": "A String", # Submitted value that causes the issue.
            "numItems": 42, # Number of items in the account found to have the said issue.
            "id": "A String", # Issue identifier.
          },
        ],
        "accountId": "A String", # The ID of the account 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>