<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".
          "websiteClaimed": True or False, # Whether the account's website is claimed or not.
          "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.
              "detail": "A String", # A more detailed description of the issue.
              "submittedValue": "A String", # Submitted value that causes the issue.
              "numItems": 42, # Number of items in the account found to have the said issue.
              "location": "A String", # The attribute name that is relevant for the issue.
              "id": "A String", # Issue identifier.
              "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.
                },
              ],
            },
          ],
          "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".
    "websiteClaimed": True or False, # Whether the account's website is claimed or not.
    "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.
        "detail": "A String", # A more detailed description of the issue.
        "submittedValue": "A String", # Submitted value that causes the issue.
        "numItems": 42, # Number of items in the account found to have the said issue.
        "location": "A String", # The attribute name that is relevant for the issue.
        "id": "A String", # Issue identifier.
        "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.
          },
        ],
      },
    ],
    "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".
        "websiteClaimed": True or False, # Whether the account's website is claimed or not.
        "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.
            "detail": "A String", # A more detailed description of the issue.
            "submittedValue": "A String", # Submitted value that causes the issue.
            "numItems": 42, # Number of items in the account found to have the said issue.
            "location": "A String", # The attribute name that is relevant for the issue.
            "id": "A String", # Issue identifier.
            "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.
              },
            ],
          },
        ],
        "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>