<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.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">Retrieves multiple Merchant Center account statuses in a single request.</p>
<p class="toc_element">
  <code><a href="#get">get(merchantId, accountId, destinations=None)</a></code></p>
<p class="firstline">Retrieves the status of a Merchant Center account. No itemLevelIssues are returned for multi-client accounts.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, pageToken=None, maxResults=None, destinations=None)</a></code></p>
<p class="firstline">Lists the statuses of the sub-accounts 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>Retrieves multiple Merchant Center account 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 accountstatuses request.
        "batchId": 42, # An entry ID, unique within the batch request.
        "method": "A String", # The method (get).
        "destinations": [ # If set, only issues for the specified destinations are returned, otherwise only issues for the Shopping destination.
          "A String",
        ],
        "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.
          "websiteClaimed": True or False, # Whether the account's website is claimed or not.
          "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
          "accountLevelIssues": [ # A list of account level issues.
            {
              "documentation": "A String", # The URL of a web page to help resolving this issue.
              "severity": "A String", # Severity of the issue.
              "title": "A String", # Short description of the issue.
              "country": "A String", # Country for which this issue is reported.
              "destination": "A String", # The destination the issue applies to.
              "detail": "A String", # Additional details about the issue.
              "id": "A String", # Issue identifier.
            },
          ],
          "products": [ # List of product-related data by channel, destination, and country. Data in this field may be delayed by up to 30 minutes.
            {
              "country": "A String", # The country the data applies to.
              "itemLevelIssues": [ # List of item-level issues.
                {
                  "code": "A String", # The error code of the issue.
                  "description": "A String", # A short issue description in English.
                  "documentation": "A String", # The URL of a web page to help with resolving this issue.
                  "attributeName": "A String", # The attribute's name, if the issue is caused by a single attribute.
                  "detail": "A String", # A detailed issue description in English.
                  "numItems": "A String", # Number of items with this issue.
                  "servability": "A String", # How this issue affects serving of the offer.
                  "resolution": "A String", # Whether the issue can be resolved by the merchant.
                },
              ],
              "destination": "A String", # The destination the data applies to.
              "channel": "A String", # The channel the data applies to.
              "statistics": { # Aggregated product statistics.
                "active": "A String", # Number of active offers.
                "expiring": "A String", # Number of expiring offers.
                "disapproved": "A String", # Number of disapproved offers.
                "pending": "A String", # Number of pending offers.
              },
            },
          ],
          "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, destinations=None)</code>
  <pre>Retrieves the status of a Merchant Center account. No itemLevelIssues are returned for multi-client accounts.

Args:
  merchantId: string, The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and accountId must be the ID of a sub-account of this account. (required)
  accountId: string, The ID of the account. (required)
  destinations: string, If set, only issues for the specified destinations are returned, otherwise only issues for the Shopping destination. (repeated)

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.
    "websiteClaimed": True or False, # Whether the account's website is claimed or not.
    "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
    "accountLevelIssues": [ # A list of account level issues.
      {
        "documentation": "A String", # The URL of a web page to help resolving this issue.
        "severity": "A String", # Severity of the issue.
        "title": "A String", # Short description of the issue.
        "country": "A String", # Country for which this issue is reported.
        "destination": "A String", # The destination the issue applies to.
        "detail": "A String", # Additional details about the issue.
        "id": "A String", # Issue identifier.
      },
    ],
    "products": [ # List of product-related data by channel, destination, and country. Data in this field may be delayed by up to 30 minutes.
      {
        "country": "A String", # The country the data applies to.
        "itemLevelIssues": [ # List of item-level issues.
          {
            "code": "A String", # The error code of the issue.
            "description": "A String", # A short issue description in English.
            "documentation": "A String", # The URL of a web page to help with resolving this issue.
            "attributeName": "A String", # The attribute's name, if the issue is caused by a single attribute.
            "detail": "A String", # A detailed issue description in English.
            "numItems": "A String", # Number of items with this issue.
            "servability": "A String", # How this issue affects serving of the offer.
            "resolution": "A String", # Whether the issue can be resolved by the merchant.
          },
        ],
        "destination": "A String", # The destination the data applies to.
        "channel": "A String", # The channel the data applies to.
        "statistics": { # Aggregated product statistics.
          "active": "A String", # Number of active offers.
          "expiring": "A String", # Number of expiring offers.
          "disapproved": "A String", # Number of disapproved offers.
          "pending": "A String", # Number of pending offers.
        },
      },
    ],
    "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, destinations=None)</code>
  <pre>Lists the statuses of the sub-accounts in your Merchant Center account.

Args:
  merchantId: string, The ID of the managing account. This must be a multi-client 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.
  destinations: string, If set, only issues for the specified destinations are returned, otherwise only issues for the Shopping destination. (repeated)

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.
        "websiteClaimed": True or False, # Whether the account's website is claimed or not.
        "kind": "content#accountStatus", # Identifies what kind of resource this is. Value: the fixed string "content#accountStatus".
        "accountLevelIssues": [ # A list of account level issues.
          {
            "documentation": "A String", # The URL of a web page to help resolving this issue.
            "severity": "A String", # Severity of the issue.
            "title": "A String", # Short description of the issue.
            "country": "A String", # Country for which this issue is reported.
            "destination": "A String", # The destination the issue applies to.
            "detail": "A String", # Additional details about the issue.
            "id": "A String", # Issue identifier.
          },
        ],
        "products": [ # List of product-related data by channel, destination, and country. Data in this field may be delayed by up to 30 minutes.
          {
            "country": "A String", # The country the data applies to.
            "itemLevelIssues": [ # List of item-level issues.
              {
                "code": "A String", # The error code of the issue.
                "description": "A String", # A short issue description in English.
                "documentation": "A String", # The URL of a web page to help with resolving this issue.
                "attributeName": "A String", # The attribute's name, if the issue is caused by a single attribute.
                "detail": "A String", # A detailed issue description in English.
                "numItems": "A String", # Number of items with this issue.
                "servability": "A String", # How this issue affects serving of the offer.
                "resolution": "A String", # Whether the issue can be resolved by the merchant.
              },
            ],
            "destination": "A String", # The destination the data applies to.
            "channel": "A String", # The channel the data applies to.
            "statistics": { # Aggregated product statistics.
              "active": "A String", # Number of active offers.
              "expiring": "A String", # Number of expiring offers.
              "disapproved": "A String", # Number of disapproved offers.
              "pending": "A String", # Number of pending offers.
            },
          },
        ],
        "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>