<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">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.
          "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.
          "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.
              },
            },
          ],
          "dataQualityIssues": [ # DEPRECATED - never populated.
            {
              "displayedValue": "A String",
              "severity": "A String",
              "lastChecked": "A String",
              "country": "A String",
              "destination": "A String",
              "detail": "A String",
              "submittedValue": "A String",
              "numItems": 42,
              "location": "A String",
              "id": "A String",
              "exampleItems": [
                {
                  "itemId": "A String",
                  "submittedValue": "A String",
                  "link": "A String",
                  "valueOnLandingPage": "A String",
                  "title": "A String",
                },
              ],
            },
          ],
          "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.
    "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.
    "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.
        },
      },
    ],
    "dataQualityIssues": [ # DEPRECATED - never populated.
      {
        "displayedValue": "A String",
        "severity": "A String",
        "lastChecked": "A String",
        "country": "A String",
        "destination": "A String",
        "detail": "A String",
        "submittedValue": "A String",
        "numItems": 42,
        "location": "A String",
        "id": "A String",
        "exampleItems": [
          {
            "itemId": "A String",
            "submittedValue": "A String",
            "link": "A String",
            "valueOnLandingPage": "A String",
            "title": "A String",
          },
        ],
      },
    ],
    "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.
        "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.
        "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.
            },
          },
        ],
        "dataQualityIssues": [ # DEPRECATED - never populated.
          {
            "displayedValue": "A String",
            "severity": "A String",
            "lastChecked": "A String",
            "country": "A String",
            "destination": "A String",
            "detail": "A String",
            "submittedValue": "A String",
            "numItems": 42,
            "location": "A String",
            "id": "A String",
            "exampleItems": [
              {
                "itemId": "A String",
                "submittedValue": "A String",
                "link": "A String",
                "valueOnLandingPage": "A String",
                "title": "A String",
              },
            ],
          },
        ],
        "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>