<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="proximitybeacon_v1beta1.html">Proximity Beacon API</a> . <a href="proximitybeacon_v1beta1.beacons.html">beacons</a> . <a href="proximitybeacon_v1beta1.beacons.diagnostics.html">diagnostics</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(beaconName, pageSize=None, projectId=None, alertFilter=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the diagnostics for a single beacon. You can also list diagnostics for</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="list">list(beaconName, pageSize=None, projectId=None, alertFilter=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the diagnostics for a single beacon. You can also list diagnostics for
all the beacons owned by your Google Developers Console project by using
the beacon name `beacons/-`.

Authenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)
from a signed-in user with **viewer**, **Is owner** or **Can edit**
permissions in the Google Developers Console project.

Args:
  beaconName: string, Beacon that the diagnostics are for. (required)
  pageSize: integer, Specifies the maximum number of results to return. Defaults to
10. Maximum 1000. Optional.
  projectId: string, Requests only diagnostic records for the given project id. If not set,
then the project making the request will be used for looking up
diagnostic records. Optional.
  alertFilter: string, Requests only beacons that have the given alert. For example, to find
beacons that have low batteries use `alert_filter=LOW_BATTERY`.
  pageToken: string, Requests results that occur after the `page_token`, obtained from the
response to a previous request. Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response that contains the requested diagnostics.
    "nextPageToken": "A String", # Token that can be used for pagination. Returned only if the
        # request matches more beacons than can be returned in this response.
    "diagnostics": [ # The diagnostics matching the given request.
      { # Diagnostics for a single beacon.
        "estimatedLowBatteryDate": { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # The date when the battery is expected to be low. If the value is missing
            # then there is no estimate for when the battery will be low.
            # This value is only an estimate, not an exact date.
            # and time zone are either specified elsewhere or are not significant. The date
            # is relative to the Proleptic Gregorian Calendar. This can represent:
            #
            # * A full date, with non-zero year, month and day values
            # * A month and day value, with a zero year, e.g. an anniversary
            # * A year on its own, with zero month and day values
            # * A year and month value, with a zero day, e.g. a credit card expiration date
            #
            # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
          "month": 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
              # month and day.
          "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
              # if specifying a year by itself or a year and month where the day is not
              # significant.
          "year": 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
              # a year.
        },
        "alerts": [ # An unordered list of Alerts that the beacon has.
          "A String",
        ],
        "beaconName": "A String", # Resource name of the beacon. For Eddystone-EID beacons, this may
            # be the beacon's current EID, or the beacon's "stable" Eddystone-UID.
      },
    ],
  }</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>