# Google Proximity Beacon API . beacons

## Instance Methods

Returns the attachments Resource.

Returns the diagnostics Resource.

Activates a beacon. A beacon that is active will return information

Deactivates a beacon. Once deactivated, the API will not return

Decommissions the specified beacon in the service. This beacon will no

Deletes the specified beacon including all diagnostics data for the beacon

Returns detailed information about the specified beacon.

Searches the beacon registry for beacons that match the given search

Retrieves the next page of results.

Registers a previously unregistered beacon given its `advertisedId`.

Updates the information about the specified beacon. **Any field that you do

### Method Details

`activate(beaconName, projectId=None, x__xgafv=None)`

    Activates a beacon. A beacon that is active will return information
    and attachment data when queried via `beaconinfo.getforobserved`.
    Calling this method on an already active beacon will do nothing (but
    will return a successful response code).

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

    Args:
      beaconName: string, Beacon that should be activated. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`
    for AltBeacon. For Eddystone-EID beacons, you may use either the
    current EID or the beacon's "stable" UID.
    Required. (required)
      projectId: string, The project id of the beacon to activate. If the project id is not
    specified then the project making the request is used. The project id
    must match the project that owns the beacon.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A generic empty message that you can re-use to avoid defining duplicated
          # empty messages in your APIs. A typical example is to use it as the request
          # or the response type of an API method. For instance:
          #
          #     service Foo {
          #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
          #     }
          #
          # The JSON representation for `Empty` is empty JSON object `{}`.
      }

`deactivate(beaconName, projectId=None, x__xgafv=None)`

    Deactivates a beacon. Once deactivated, the API will not return
    information nor attachment data for the beacon when queried via
    `beaconinfo.getforobserved`. Calling this method on an already inactive
    beacon will do nothing (but will return a successful response code).

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

    Args:
      beaconName: string, Beacon that should be deactivated. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`
    for AltBeacon. For Eddystone-EID beacons, you may use either the
    current EID or the beacon's "stable" UID.
    Required. (required)
      projectId: string, The project id of the beacon to deactivate. If the project id is not
    specified then the project making the request is used. The project id must
    match the project that owns the beacon.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A generic empty message that you can re-use to avoid defining duplicated
          # empty messages in your APIs. A typical example is to use it as the request
          # or the response type of an API method. For instance:
          #
          #     service Foo {
          #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
          #     }
          #
          # The JSON representation for `Empty` is empty JSON object `{}`.
      }

`decommission(beaconName, projectId=None, x__xgafv=None)`

    Decommissions the specified beacon in the service. This beacon will no
    longer be returned from `beaconinfo.getforobserved`. This operation is
    permanent -- you will not be able to re-register a beacon with this ID
    again.

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

    Args:
      beaconName: string, Beacon that should be decommissioned. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`
    for AltBeacon. For Eddystone-EID beacons, you may use either the
    current EID of the beacon's "stable" UID.
    Required. (required)
      projectId: string, The project id of the beacon to decommission. If the project id is not
    specified then the project making the request is used. The project id
    must match the project that owns the beacon.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A generic empty message that you can re-use to avoid defining duplicated
          # empty messages in your APIs. A typical example is to use it as the request
          # or the response type of an API method. For instance:
          #
          #     service Foo {
          #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
          #     }
          #
          # The JSON representation for `Empty` is empty JSON object `{}`.
      }

`delete(beaconName, projectId=None, x__xgafv=None)`

    Deletes the specified beacon including all diagnostics data for the beacon
    as well as any attachments on the beacon (including those belonging to
    other projects). This operation cannot be undone.

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

    Args:
      beaconName: string, Beacon that should be deleted. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`
    for AltBeacon. For Eddystone-EID beacons, you may use either the
    current EID or the beacon's "stable" UID.
    Required. (required)
      projectId: string, The project id of the beacon to delete. If not provided, the project
    that is making the request is used.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A generic empty message that you can re-use to avoid defining duplicated
          # empty messages in your APIs. A typical example is to use it as the request
          # or the response type of an API method. For instance:
          #
          #     service Foo {
          #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
          #     }
          #
          # The JSON representation for `Empty` is empty JSON object `{}`.
      }

`get(beaconName, projectId=None, x__xgafv=None)`

    Returns detailed information about the specified beacon.

    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.

    Requests may supply an Eddystone-EID beacon name in the form:
    `beacons/4!beaconId` where the `beaconId` is the base16 ephemeral ID
    broadcast by the beacon. The returned `Beacon` object will contain the
    beacon's stable Eddystone-UID. Clients not authorized to resolve the
    beacon's ephemeral Eddystone-EID broadcast will receive an error.

    Args:
      beaconName: string, Resource name of this beacon. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`
    for AltBeacon. For Eddystone-EID beacons, you may use either the
    current EID or the beacon's "stable" UID.
    Required. (required)
      projectId: string, The project id of the beacon to request. If the project id is not specified
    then the project making the request is used. The project id must match the
    project that owns the beacon.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Details of a beacon device.
        "status": "A String", # Current status of the beacon.
            # Required.
        "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
            # characters.
            # Optional.
        "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
            # Google Maps API.
            # Optional.
            # useful to indicate which floor of a building a beacon is located on.
          "name": "A String", # The name of this level.
        },
        "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
            # This location is given when the beacon is registered or updated. It does
            # not necessarily indicate the actual current location of the beacon.
            # Optional.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
            #
            # Example of normalization code in Python:
            #
            #     def NormalizeLongitude(longitude):
            #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
            #       q, r = divmod(longitude, 360.0)
            #       if r > 180.0 or (r == 180.0 and q <= -1.0):
            #         return r - 360.0
            #       return r
            #
            #     def NormalizeLatLng(latitude, longitude):
            #       """Wraps decimal degrees latitude and longitude to
            #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
            #       r = latitude % 360.0
            #       if r <= 90.0:
            #         return r, NormalizeLongitude(longitude)
            #       elif r >= 270.0:
            #         return r - 360, NormalizeLongitude(longitude)
            #       else:
            #         return 180 - r, NormalizeLongitude(longitude + 180.0)
            #
            #     assert 180.0 == NormalizeLongitude(180.0)
            #     assert -180.0 == NormalizeLongitude(-180.0)
            #     assert -179.0 == NormalizeLongitude(181.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
            #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
            #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
            #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
            #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
            # the beacon is deployed. This is given when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
            # (remotely resolved ephemeral ID) format. This information will not be
            # populated in API responses. When submitting this data, the `advertised_id`
            # field must contain an ID of type Eddystone-UID. Any other ID type will
            # result in an error.
            # Two ways of securely registering an Eddystone-EID beacon with the service
            # are supported:
            #
            # 1. Perform an ECDH key exchange via this API, including a previous call
            #    to `GET /v1beta1/eidparams`. In this case the fields
            #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
            #    populated and `beacon_identity_key` should not be populated. This
            #    method ensures that only the two parties in the ECDH key exchange can
            #    compute the identity key, which becomes a secret between them.
            # 2. Derive or obtain the beacon's identity key via other secure means
            #    (perhaps an ECDH key exchange between the beacon and a mobile device
            #    or any other secure method), and then submit the resulting identity key
            #    to the service. In this case `beacon_identity_key` field should be
            #    populated, and neither of `beacon_ecdh_public_key` nor
            #    `service_ecdh_public_key` fields should be. The security of this method
            #    depends on how securely the parties involved (in particular the
            #    bluetooth client) handle the identity key, and obviously on how
            #    securely the identity key was generated.
            #
            # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
          "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
              # ephemeral ID. "Nominal" because the beacon should randomize the
              # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
              # for details. This value corresponds to a power-of-two scaler on the
              # beacon's clock: when the scaler value is K, the beacon will begin
              # broadcasting a new ephemeral ID on average every 2^K seconds.
          "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
              # begun counting at this value immediately prior to transmitting this
              # value to the resolving service. Significant delay in transmitting this
              # value to the service risks registration or resolution failures. If a
              # value is not provided, the default is zero.
          "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `beacon_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
              # `initial_clock_value`, and the secret key generated by the
              # Diffie-Hellman key exchange using `service_ecdh_public_key` and
              # `service_ecdh_public_key`. This initial EID value will be used by the
              # service to confirm that the key exchange process was successful.
          "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `service_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
              # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
              # populated.
        },
        "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
            # populated when registering. It may be empty when updating a beacon
            # record because it is ignored in updates.
            #
            # When registering a beacon that broadcasts Eddystone-EID, this field
            # should contain a "stable" Eddystone-UID that identifies the beacon and
            # links it to its attachments. The stable Eddystone-UID is only used for
            # administering the beacon.
          "type": "A String", # Specifies the identifier type.
              # Required.
          "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
              # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
              # requests, and will be so encoded (with padding) in responses. The base64
              # encoding should be of the binary byte-stream and not any textual (such as
              # hex) representation thereof.
              # Required.
        },
        "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
            # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
            # the beacon and N is a code for the beacon's type. Possible values are
            # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
            #
            # This field must be left empty when registering. After reading a beacon,
            # clients can use the name for future operations.
        "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "properties": { # Properties of the beacon device, for example battery type or firmware
            # version.
            # Optional.
          "a_key": "A String",
        },
        "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
            # changing any of its configuration (e.g. broadcast frames, transmit power).
            # This field provides a place to store and control access to that key.
            # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
            # from users with write access to the given beacon. That is to say: If the
            # user is authorized to write the beacon's confidential data in the service,
            # the service considers them authorized to configure the beacon. Note
            # that this key grants nothing on the service, only on the beacon itself.
      }

`list(pageSize=None, projectId=None, q=None, syntax=None, pageToken=None, x__xgafv=None)`

    Searches the beacon registry for beacons that match the given search
    criteria. Only those beacons that the client has permission to list
    will be returned.

    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:
      pageSize: integer, The maximum number of records to return for this request, up to a
    server-defined upper limit.
      projectId: string, The project id to list beacons under. If not present then the project
    credential that made the request is used as the project.
    Optional.
      q: string, Filter query string that supports the following field filters:

    * **description:`""`**
      For example: **description:"Room 3"**
      Returns beacons whose description matches tokens in the string "Room 3"
      (not necessarily that exact string).
      The string must be double-quoted.
    * **status:``**
      For example: **status:active**
      Returns beacons whose status matches the given value. Values must be
      one of the Beacon.Status enum values (case insensitive). Accepts
      multiple filters which will be combined with OR logic.
    * **stability:``**
      For example: **stability:mobile**
      Returns beacons whose expected stability matches the given value.
      Values must be one of the Beacon.Stability enum values (case
      insensitive). Accepts multiple filters which will be combined with
      OR logic.
    * **place\_id:`""`**
      For example: **place\_id:"ChIJVSZzVR8FdkgRXGmmm6SslKw="**
      Returns beacons explicitly registered at the given place, expressed as
      a Place ID obtained from [Google Places API](/places/place-id). Does not
      match places inside the given place. Does not consider the beacon's
      actual location (which may be different from its registered place).
      Accepts multiple filters that will be combined with OR logic. The place
      ID must be double-quoted.
    * **registration\_time`[<|>|<=|>=]`**
      For example: **registration\_time>=1433116800**
      Returns beacons whose registration time matches the given filter.
      Supports the operators: <, >, <=, and >=. Timestamp must be expressed as
      an integer number of seconds since midnight January 1, 1970 UTC. Accepts
      at most two filters that will be combined with AND logic, to support
      "between" semantics. If more than two are supplied, the latter ones are
      ignored.
    * **lat:` lng: radius:`**
      For example: **lat:51.1232343 lng:-1.093852 radius:1000**
      Returns beacons whose registered location is within the given circle.
      When any of these fields are given, all are required. Latitude and
      longitude must be decimal degrees between -90.0 and 90.0 and between
      -180.0 and 180.0 respectively. Radius must be an integer number of
      meters between 10 and 1,000,000 (1000 km).
    * **property:`"="`**
      For example: **property:"battery-type=CR2032"**
      Returns beacons which have a property of the given name and value.
      Supports multiple filters which will be combined with OR logic.
      The entire name=value string must be double-quoted as one string.
    * **attachment\_type:`""`**
      For example: **attachment_type:"my-namespace/my-type"**
      Returns beacons having at least one attachment of the given namespaced
      type. Supports "any within this namespace" via the partial wildcard
      syntax: "my-namespace/*". Supports multiple filters which will be
      combined with OR logic. The string must be double-quoted.
    * **indoor\_level:`""`**
      For example: **indoor\_level:"1"**
      Returns beacons which are located on the given indoor level. Accepts
      multiple filters that will be combined with OR logic.

    Multiple filters on the same field are combined with OR logic (except
    registration_time which is combined with AND logic).
    Multiple filters on different fields are combined with AND logic.
    Filters should be separated by spaces.

    As with any HTTP query string parameter, the whole filter expression must
    be URL-encoded.

    Example REST request:
    `GET /v1beta1/beacons?q=status:active%20lat:51.123%20lng:-1.095%20radius:1000`
      pageToken: string, A pagination token obtained from a previous request to list beacons.
      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 list beacon results and pagination help.
        "nextPageToken": "A String", # An opaque pagination token that the client may provide in their next
            # request to retrieve the next page of results.
        "beacons": [ # The beacons that matched the search criteria.
          { # Details of a beacon device.
            "status": "A String", # Current status of the beacon.
                # Required.
            "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
                # characters.
                # Optional.
            "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
                # Google Maps API.
                # Optional.
                # useful to indicate which floor of a building a beacon is located on.
              "name": "A String", # The name of this level.
            },
            "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
                # This location is given when the beacon is registered or updated. It does
                # not necessarily indicate the actual current location of the beacon.
                # Optional.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
                #
                # Example of normalization code in Python:
                #
                #     def NormalizeLongitude(longitude):
                #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
                #       q, r = divmod(longitude, 360.0)
                #       if r > 180.0 or (r == 180.0 and q <= -1.0):
                #         return r - 360.0
                #       return r
                #
                #     def NormalizeLatLng(latitude, longitude):
                #       """Wraps decimal degrees latitude and longitude to
                #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
                #       r = latitude % 360.0
                #       if r <= 90.0:
                #         return r, NormalizeLongitude(longitude)
                #       elif r >= 270.0:
                #         return r - 360, NormalizeLongitude(longitude)
                #       else:
                #         return 180 - r, NormalizeLongitude(longitude + 180.0)
                #
                #     assert 180.0 == NormalizeLongitude(180.0)
                #     assert -180.0 == NormalizeLongitude(-180.0)
                #     assert -179.0 == NormalizeLongitude(181.0)
                #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
                #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
                #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
                #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
                #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
                #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
                #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
                #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
                #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
                #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
                # the beacon is deployed. This is given when the beacon is registered or
                # updated, not automatically detected in any way.
                # Optional.
            "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
                # (remotely resolved ephemeral ID) format. This information will not be
                # populated in API responses. When submitting this data, the `advertised_id`
                # field must contain an ID of type Eddystone-UID. Any other ID type will
                # result in an error.
                # Two ways of securely registering an Eddystone-EID beacon with the service
                # are supported:
                #
                # 1. Perform an ECDH key exchange via this API, including a previous call
                #    to `GET /v1beta1/eidparams`. In this case the fields
                #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
                #    populated and `beacon_identity_key` should not be populated. This
                #    method ensures that only the two parties in the ECDH key exchange can
                #    compute the identity key, which becomes a secret between them.
                # 2. Derive or obtain the beacon's identity key via other secure means
                #    (perhaps an ECDH key exchange between the beacon and a mobile device
                #    or any other secure method), and then submit the resulting identity key
                #    to the service. In this case `beacon_identity_key` field should be
                #    populated, and neither of `beacon_ecdh_public_key` nor
                #    `service_ecdh_public_key` fields should be. The security of this method
                #    depends on how securely the parties involved (in particular the
                #    bluetooth client) handle the identity key, and obviously on how
                #    securely the identity key was generated.
                #
                # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
              "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
                  # ephemeral ID. "Nominal" because the beacon should randomize the
                  # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
                  # for details. This value corresponds to a power-of-two scaler on the
                  # beacon's clock: when the scaler value is K, the beacon will begin
                  # broadcasting a new ephemeral ID on average every 2^K seconds.
              "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
                  # begun counting at this value immediately prior to transmitting this
                  # value to the resolving service. Significant delay in transmitting this
                  # value to the service risks registration or resolution failures. If a
                  # value is not provided, the default is zero.
              "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
                  # key exchange. When this field is populated, `beacon_ecdh_public_key`
                  # must also be populated, and `beacon_identity_key` must not be.
              "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
                  # `initial_clock_value`, and the secret key generated by the
                  # Diffie-Hellman key exchange using `service_ecdh_public_key` and
                  # `service_ecdh_public_key`. This initial EID value will be used by the
                  # service to confirm that the key exchange process was successful.
              "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
                  # key exchange. When this field is populated, `service_ecdh_public_key`
                  # must also be populated, and `beacon_identity_key` must not be.
              "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
                  # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
                  # populated.
            },
            "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
                # populated when registering. It may be empty when updating a beacon
                # record because it is ignored in updates.
                #
                # When registering a beacon that broadcasts Eddystone-EID, this field
                # should contain a "stable" Eddystone-UID that identifies the beacon and
                # links it to its attachments. The stable Eddystone-UID is only used for
                # administering the beacon.
              "type": "A String", # Specifies the identifier type.
                  # Required.
              "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
                  # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
                  # requests, and will be so encoded (with padding) in responses. The base64
                  # encoding should be of the binary byte-stream and not any textual (such as
                  # hex) representation thereof.
                  # Required.
            },
            "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
                # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
                # the beacon and N is a code for the beacon's type. Possible values are
                # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
                #
                # This field must be left empty when registering. After reading a beacon,
                # clients can use the name for future operations.
            "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
                # updated, not automatically detected in any way.
                # Optional.
            "properties": { # Properties of the beacon device, for example battery type or firmware
                # version.
                # Optional.
              "a_key": "A String",
            },
            "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
                # changing any of its configuration (e.g. broadcast frames, transmit power).
                # This field provides a place to store and control access to that key.
                # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
                # from users with write access to the given beacon. That is to say: If the
                # user is authorized to write the beacon's confidential data in the service,
                # the service considers them authorized to configure the beacon. Note
                # that this key grants nothing on the service, only on the beacon itself.
          },
        ],
        "totalCount": "A String", # Estimate of the total number of beacons matched by the query. Higher
            # values may be less accurate.
      }

`list_next(previous_request, previous_response)`

    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.

`register(body, projectId=None, x__xgafv=None)`

    Registers a previously unregistered beacon given its `advertisedId`.
    These IDs are unique within the system. An ID can be registered only once.

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

    Args:
      body: object, The request body. (required)
        The object takes the form of:

    { # Details of a beacon device.
      "status": "A String", # Current status of the beacon.
          # Required.
      "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
          # characters.
          # Optional.
      "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
          # Google Maps API.
          # Optional.
          # useful to indicate which floor of a building a beacon is located on.
        "name": "A String", # The name of this level.
      },
      "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
          # This location is given when the beacon is registered or updated. It does
          # not necessarily indicate the actual current location of the beacon.
          # Optional.
          # of doubles representing degrees latitude and degrees longitude. Unless
          # specified otherwise, this must conform to the
          # WGS84
          # standard. Values must be within normalized ranges.
          #
          # Example of normalization code in Python:
          #
          #     def NormalizeLongitude(longitude):
          #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
          #       q, r = divmod(longitude, 360.0)
          #       if r > 180.0 or (r == 180.0 and q <= -1.0):
          #         return r - 360.0
          #       return r
          #
          #     def NormalizeLatLng(latitude, longitude):
          #       """Wraps decimal degrees latitude and longitude to
          #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
          #       r = latitude % 360.0
          #       if r <= 90.0:
          #         return r, NormalizeLongitude(longitude)
          #       elif r >= 270.0:
          #         return r - 360, NormalizeLongitude(longitude)
          #       else:
          #         return 180 - r, NormalizeLongitude(longitude + 180.0)
          #
          #     assert 180.0 == NormalizeLongitude(180.0)
          #     assert -180.0 == NormalizeLongitude(-180.0)
          #     assert -179.0 == NormalizeLongitude(181.0)
          #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
          #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
          #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
          #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
          #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
          #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
          #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
          #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
          #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
          #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
        "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
          # the beacon is deployed. This is given when the beacon is registered or
          # updated, not automatically detected in any way.
          # Optional.
      "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
          # (remotely resolved ephemeral ID) format. This information will not be
          # populated in API responses. When submitting this data, the `advertised_id`
          # field must contain an ID of type Eddystone-UID. Any other ID type will
          # result in an error.
          # Two ways of securely registering an Eddystone-EID beacon with the service
          # are supported:
          #
          # 1. Perform an ECDH key exchange via this API, including a previous call
          #    to `GET /v1beta1/eidparams`. In this case the fields
          #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
          #    populated and `beacon_identity_key` should not be populated. This
          #    method ensures that only the two parties in the ECDH key exchange can
          #    compute the identity key, which becomes a secret between them.
          # 2. Derive or obtain the beacon's identity key via other secure means
          #    (perhaps an ECDH key exchange between the beacon and a mobile device
          #    or any other secure method), and then submit the resulting identity key
          #    to the service. In this case `beacon_identity_key` field should be
          #    populated, and neither of `beacon_ecdh_public_key` nor
          #    `service_ecdh_public_key` fields should be. The security of this method
          #    depends on how securely the parties involved (in particular the
          #    bluetooth client) handle the identity key, and obviously on how
          #    securely the identity key was generated.
          #
          # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
        "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
            # ephemeral ID. "Nominal" because the beacon should randomize the
            # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
            # for details. This value corresponds to a power-of-two scaler on the
            # beacon's clock: when the scaler value is K, the beacon will begin
            # broadcasting a new ephemeral ID on average every 2^K seconds.
        "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
            # begun counting at this value immediately prior to transmitting this
            # value to the resolving service. Significant delay in transmitting this
            # value to the service risks registration or resolution failures. If a
            # value is not provided, the default is zero.
        "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
            # key exchange. When this field is populated, `beacon_ecdh_public_key`
            # must also be populated, and `beacon_identity_key` must not be.
        "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
            # `initial_clock_value`, and the secret key generated by the
            # Diffie-Hellman key exchange using `service_ecdh_public_key` and
            # `service_ecdh_public_key`. This initial EID value will be used by the
            # service to confirm that the key exchange process was successful.
        "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
            # key exchange. When this field is populated, `service_ecdh_public_key`
            # must also be populated, and `beacon_identity_key` must not be.
        "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
            # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
            # populated.
      },
      "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
          # populated when registering. It may be empty when updating a beacon
          # record because it is ignored in updates.
          #
          # When registering a beacon that broadcasts Eddystone-EID, this field
          # should contain a "stable" Eddystone-UID that identifies the beacon and
          # links it to its attachments. The stable Eddystone-UID is only used for
          # administering the beacon.
        "type": "A String", # Specifies the identifier type.
            # Required.
        "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
            # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
            # requests, and will be so encoded (with padding) in responses. The base64
            # encoding should be of the binary byte-stream and not any textual (such as
            # hex) representation thereof.
            # Required.
      },
      "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
          # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
          # the beacon and N is a code for the beacon's type. Possible values are
          # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
          #
          # This field must be left empty when registering. After reading a beacon,
          # clients can use the name for future operations.
      "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
          # updated, not automatically detected in any way.
          # Optional.
      "properties": { # Properties of the beacon device, for example battery type or firmware
          # version.
          # Optional.
        "a_key": "A String",
      },
      "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
          # changing any of its configuration (e.g. broadcast frames, transmit power).
          # This field provides a place to store and control access to that key.
          # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
          # from users with write access to the given beacon. That is to say: If the
          # user is authorized to write the beacon's confidential data in the service,
          # the service considers them authorized to configure the beacon. Note
          # that this key grants nothing on the service, only on the beacon itself.
    }

      projectId: string, The project id of the project the beacon will be registered to. If
    the project id is not specified then the project making the request
    is used.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Details of a beacon device.
        "status": "A String", # Current status of the beacon.
            # Required.
        "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
            # characters.
            # Optional.
        "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
            # Google Maps API.
            # Optional.
            # useful to indicate which floor of a building a beacon is located on.
          "name": "A String", # The name of this level.
        },
        "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
            # This location is given when the beacon is registered or updated. It does
            # not necessarily indicate the actual current location of the beacon.
            # Optional.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
            #
            # Example of normalization code in Python:
            #
            #     def NormalizeLongitude(longitude):
            #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
            #       q, r = divmod(longitude, 360.0)
            #       if r > 180.0 or (r == 180.0 and q <= -1.0):
            #         return r - 360.0
            #       return r
            #
            #     def NormalizeLatLng(latitude, longitude):
            #       """Wraps decimal degrees latitude and longitude to
            #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
            #       r = latitude % 360.0
            #       if r <= 90.0:
            #         return r, NormalizeLongitude(longitude)
            #       elif r >= 270.0:
            #         return r - 360, NormalizeLongitude(longitude)
            #       else:
            #         return 180 - r, NormalizeLongitude(longitude + 180.0)
            #
            #     assert 180.0 == NormalizeLongitude(180.0)
            #     assert -180.0 == NormalizeLongitude(-180.0)
            #     assert -179.0 == NormalizeLongitude(181.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
            #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
            #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
            #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
            #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
            # the beacon is deployed. This is given when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
            # (remotely resolved ephemeral ID) format. This information will not be
            # populated in API responses. When submitting this data, the `advertised_id`
            # field must contain an ID of type Eddystone-UID. Any other ID type will
            # result in an error.
            # Two ways of securely registering an Eddystone-EID beacon with the service
            # are supported:
            #
            # 1. Perform an ECDH key exchange via this API, including a previous call
            #    to `GET /v1beta1/eidparams`. In this case the fields
            #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
            #    populated and `beacon_identity_key` should not be populated. This
            #    method ensures that only the two parties in the ECDH key exchange can
            #    compute the identity key, which becomes a secret between them.
            # 2. Derive or obtain the beacon's identity key via other secure means
            #    (perhaps an ECDH key exchange between the beacon and a mobile device
            #    or any other secure method), and then submit the resulting identity key
            #    to the service. In this case `beacon_identity_key` field should be
            #    populated, and neither of `beacon_ecdh_public_key` nor
            #    `service_ecdh_public_key` fields should be. The security of this method
            #    depends on how securely the parties involved (in particular the
            #    bluetooth client) handle the identity key, and obviously on how
            #    securely the identity key was generated.
            #
            # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
          "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
              # ephemeral ID. "Nominal" because the beacon should randomize the
              # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
              # for details. This value corresponds to a power-of-two scaler on the
              # beacon's clock: when the scaler value is K, the beacon will begin
              # broadcasting a new ephemeral ID on average every 2^K seconds.
          "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
              # begun counting at this value immediately prior to transmitting this
              # value to the resolving service. Significant delay in transmitting this
              # value to the service risks registration or resolution failures. If a
              # value is not provided, the default is zero.
          "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `beacon_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
              # `initial_clock_value`, and the secret key generated by the
              # Diffie-Hellman key exchange using `service_ecdh_public_key` and
              # `service_ecdh_public_key`. This initial EID value will be used by the
              # service to confirm that the key exchange process was successful.
          "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `service_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
              # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
              # populated.
        },
        "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
            # populated when registering. It may be empty when updating a beacon
            # record because it is ignored in updates.
            #
            # When registering a beacon that broadcasts Eddystone-EID, this field
            # should contain a "stable" Eddystone-UID that identifies the beacon and
            # links it to its attachments. The stable Eddystone-UID is only used for
            # administering the beacon.
          "type": "A String", # Specifies the identifier type.
              # Required.
          "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
              # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
              # requests, and will be so encoded (with padding) in responses. The base64
              # encoding should be of the binary byte-stream and not any textual (such as
              # hex) representation thereof.
              # Required.
        },
        "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
            # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
            # the beacon and N is a code for the beacon's type. Possible values are
            # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
            #
            # This field must be left empty when registering. After reading a beacon,
            # clients can use the name for future operations.
        "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "properties": { # Properties of the beacon device, for example battery type or firmware
            # version.
            # Optional.
          "a_key": "A String",
        },
        "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
            # changing any of its configuration (e.g. broadcast frames, transmit power).
            # This field provides a place to store and control access to that key.
            # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
            # from users with write access to the given beacon. That is to say: If the
            # user is authorized to write the beacon's confidential data in the service,
            # the service considers them authorized to configure the beacon. Note
            # that this key grants nothing on the service, only on the beacon itself.
      }

`update(beaconName, body, projectId=None, x__xgafv=None)`

    Updates the information about the specified beacon. **Any field that you do
    not populate in the submitted beacon will be permanently erased**, so you
    should follow the "read, modify, write" pattern to avoid inadvertently
    destroying data.

    Changes to the beacon status via this method will be  silently ignored.
    To update beacon status, use the separate methods on this API for
    activation, deactivation, and decommissioning.
    Authenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)
    from a signed-in user with **Is owner** or **Can edit** permissions in the
    Google Developers Console project.

    Args:
      beaconName: string, Resource name of this beacon. A beacon name has the format
    "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
    the beacon and N is a code for the beacon's type. Possible values are
    `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.

    This field must be left empty when registering. After reading a beacon,
    clients can use the name for future operations. (required)
      body: object, The request body. (required)
        The object takes the form of:

    { # Details of a beacon device.
      "status": "A String", # Current status of the beacon.
          # Required.
      "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
          # characters.
          # Optional.
      "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
          # Google Maps API.
          # Optional.
          # useful to indicate which floor of a building a beacon is located on.
        "name": "A String", # The name of this level.
      },
      "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
          # This location is given when the beacon is registered or updated. It does
          # not necessarily indicate the actual current location of the beacon.
          # Optional.
          # of doubles representing degrees latitude and degrees longitude. Unless
          # specified otherwise, this must conform to the
          # WGS84
          # standard. Values must be within normalized ranges.
          #
          # Example of normalization code in Python:
          #
          #     def NormalizeLongitude(longitude):
          #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
          #       q, r = divmod(longitude, 360.0)
          #       if r > 180.0 or (r == 180.0 and q <= -1.0):
          #         return r - 360.0
          #       return r
          #
          #     def NormalizeLatLng(latitude, longitude):
          #       """Wraps decimal degrees latitude and longitude to
          #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
          #       r = latitude % 360.0
          #       if r <= 90.0:
          #         return r, NormalizeLongitude(longitude)
          #       elif r >= 270.0:
          #         return r - 360, NormalizeLongitude(longitude)
          #       else:
          #         return 180 - r, NormalizeLongitude(longitude + 180.0)
          #
          #     assert 180.0 == NormalizeLongitude(180.0)
          #     assert -180.0 == NormalizeLongitude(-180.0)
          #     assert -179.0 == NormalizeLongitude(181.0)
          #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
          #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
          #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
          #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
          #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
          #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
          #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
          #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
          #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
          #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
        "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
          # the beacon is deployed. This is given when the beacon is registered or
          # updated, not automatically detected in any way.
          # Optional.
      "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
          # (remotely resolved ephemeral ID) format. This information will not be
          # populated in API responses. When submitting this data, the `advertised_id`
          # field must contain an ID of type Eddystone-UID. Any other ID type will
          # result in an error.
          # Two ways of securely registering an Eddystone-EID beacon with the service
          # are supported:
          #
          # 1. Perform an ECDH key exchange via this API, including a previous call
          #    to `GET /v1beta1/eidparams`. In this case the fields
          #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
          #    populated and `beacon_identity_key` should not be populated. This
          #    method ensures that only the two parties in the ECDH key exchange can
          #    compute the identity key, which becomes a secret between them.
          # 2. Derive or obtain the beacon's identity key via other secure means
          #    (perhaps an ECDH key exchange between the beacon and a mobile device
          #    or any other secure method), and then submit the resulting identity key
          #    to the service. In this case `beacon_identity_key` field should be
          #    populated, and neither of `beacon_ecdh_public_key` nor
          #    `service_ecdh_public_key` fields should be. The security of this method
          #    depends on how securely the parties involved (in particular the
          #    bluetooth client) handle the identity key, and obviously on how
          #    securely the identity key was generated.
          #
          # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
        "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
            # ephemeral ID. "Nominal" because the beacon should randomize the
            # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
            # for details. This value corresponds to a power-of-two scaler on the
            # beacon's clock: when the scaler value is K, the beacon will begin
            # broadcasting a new ephemeral ID on average every 2^K seconds.
        "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
            # begun counting at this value immediately prior to transmitting this
            # value to the resolving service. Significant delay in transmitting this
            # value to the service risks registration or resolution failures. If a
            # value is not provided, the default is zero.
        "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
            # key exchange. When this field is populated, `beacon_ecdh_public_key`
            # must also be populated, and `beacon_identity_key` must not be.
        "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
            # `initial_clock_value`, and the secret key generated by the
            # Diffie-Hellman key exchange using `service_ecdh_public_key` and
            # `service_ecdh_public_key`. This initial EID value will be used by the
            # service to confirm that the key exchange process was successful.
        "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
            # key exchange. When this field is populated, `service_ecdh_public_key`
            # must also be populated, and `beacon_identity_key` must not be.
        "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
            # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
            # populated.
      },
      "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
          # populated when registering. It may be empty when updating a beacon
          # record because it is ignored in updates.
          #
          # When registering a beacon that broadcasts Eddystone-EID, this field
          # should contain a "stable" Eddystone-UID that identifies the beacon and
          # links it to its attachments. The stable Eddystone-UID is only used for
          # administering the beacon.
        "type": "A String", # Specifies the identifier type.
            # Required.
        "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
            # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
            # requests, and will be so encoded (with padding) in responses. The base64
            # encoding should be of the binary byte-stream and not any textual (such as
            # hex) representation thereof.
            # Required.
      },
      "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
          # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
          # the beacon and N is a code for the beacon's type. Possible values are
          # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
          #
          # This field must be left empty when registering. After reading a beacon,
          # clients can use the name for future operations.
      "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
          # updated, not automatically detected in any way.
          # Optional.
      "properties": { # Properties of the beacon device, for example battery type or firmware
          # version.
          # Optional.
        "a_key": "A String",
      },
      "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
          # changing any of its configuration (e.g. broadcast frames, transmit power).
          # This field provides a place to store and control access to that key.
          # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
          # from users with write access to the given beacon. That is to say: If the
          # user is authorized to write the beacon's confidential data in the service,
          # the service considers them authorized to configure the beacon. Note
          # that this key grants nothing on the service, only on the beacon itself.
    }

      projectId: string, The project id of the beacon to update. If the project id is not
    specified then the project making the request is used. The project id
    must match the project that owns the beacon.
    Optional.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Details of a beacon device.
        "status": "A String", # Current status of the beacon.
            # Required.
        "description": "A String", # Free text used to identify and describe the beacon. Maximum length 140
            # characters.
            # Optional.
        "indoorLevel": { # Indoor level, a human-readable string as returned by Google Maps APIs, # The indoor level information for this beacon, if known. As returned by the
            # Google Maps API.
            # Optional.
            # useful to indicate which floor of a building a beacon is located on.
          "name": "A String", # The name of this level.
        },
        "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # The location of the beacon, expressed as a latitude and longitude pair.
            # This location is given when the beacon is registered or updated. It does
            # not necessarily indicate the actual current location of the beacon.
            # Optional.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
            #
            # Example of normalization code in Python:
            #
            #     def NormalizeLongitude(longitude):
            #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
            #       q, r = divmod(longitude, 360.0)
            #       if r > 180.0 or (r == 180.0 and q <= -1.0):
            #         return r - 360.0
            #       return r
            #
            #     def NormalizeLatLng(latitude, longitude):
            #       """Wraps decimal degrees latitude and longitude to
            #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
            #       r = latitude % 360.0
            #       if r <= 90.0:
            #         return r, NormalizeLongitude(longitude)
            #       elif r >= 270.0:
            #         return r - 360, NormalizeLongitude(longitude)
            #       else:
            #         return 180 - r, NormalizeLongitude(longitude + 180.0)
            #
            #     assert 180.0 == NormalizeLongitude(180.0)
            #     assert -180.0 == NormalizeLongitude(-180.0)
            #     assert -179.0 == NormalizeLongitude(181.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
            #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
            #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
            #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
            #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
            #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
            #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
            #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        "placeId": "A String", # The [Google Places API](/places/place-id) Place ID of the place where
            # the beacon is deployed. This is given when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "ephemeralIdRegistration": { # Write-only registration parameters for beacons using Eddystone-EID format. # Write-only registration parameters for beacons using Eddystone-EID
            # (remotely resolved ephemeral ID) format. This information will not be
            # populated in API responses. When submitting this data, the `advertised_id`
            # field must contain an ID of type Eddystone-UID. Any other ID type will
            # result in an error.
            # Two ways of securely registering an Eddystone-EID beacon with the service
            # are supported:
            #
            # 1. Perform an ECDH key exchange via this API, including a previous call
            #    to `GET /v1beta1/eidparams`. In this case the fields
            #    `beacon_ecdh_public_key` and `service_ecdh_public_key` should be
            #    populated and `beacon_identity_key` should not be populated. This
            #    method ensures that only the two parties in the ECDH key exchange can
            #    compute the identity key, which becomes a secret between them.
            # 2. Derive or obtain the beacon's identity key via other secure means
            #    (perhaps an ECDH key exchange between the beacon and a mobile device
            #    or any other secure method), and then submit the resulting identity key
            #    to the service. In this case `beacon_identity_key` field should be
            #    populated, and neither of `beacon_ecdh_public_key` nor
            #    `service_ecdh_public_key` fields should be. The security of this method
            #    depends on how securely the parties involved (in particular the
            #    bluetooth client) handle the identity key, and obviously on how
            #    securely the identity key was generated.
            #
            # See [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.
          "rotationPeriodExponent": 42, # Indicates the nominal period between each rotation of the beacon's
              # ephemeral ID. "Nominal" because the beacon should randomize the
              # actual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)
              # for details. This value corresponds to a power-of-two scaler on the
              # beacon's clock: when the scaler value is K, the beacon will begin
              # broadcasting a new ephemeral ID on average every 2^K seconds.
          "initialClockValue": "A String", # The initial clock value of the beacon. The beacon's clock must have
              # begun counting at this value immediately prior to transmitting this
              # value to the resolving service. Significant delay in transmitting this
              # value to the service risks registration or resolution failures. If a
              # value is not provided, the default is zero.
          "serviceEcdhPublicKey": "A String", # The service's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `beacon_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "initialEid": "A String", # An initial ephemeral ID calculated using the clock value submitted as
              # `initial_clock_value`, and the secret key generated by the
              # Diffie-Hellman key exchange using `service_ecdh_public_key` and
              # `service_ecdh_public_key`. This initial EID value will be used by the
              # service to confirm that the key exchange process was successful.
          "beaconEcdhPublicKey": "A String", # The beacon's public key used for the Elliptic curve Diffie-Hellman
              # key exchange. When this field is populated, `service_ecdh_public_key`
              # must also be populated, and `beacon_identity_key` must not be.
          "beaconIdentityKey": "A String", # The private key of the beacon. If this field is populated,
              # `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
              # populated.
        },
        "advertisedId": { # Defines a unique identifier of a beacon as broadcast by the device. # The identifier of a beacon as advertised by it. This field must be
            # populated when registering. It may be empty when updating a beacon
            # record because it is ignored in updates.
            #
            # When registering a beacon that broadcasts Eddystone-EID, this field
            # should contain a "stable" Eddystone-UID that identifies the beacon and
            # links it to its attachments. The stable Eddystone-UID is only used for
            # administering the beacon.
          "type": "A String", # Specifies the identifier type.
              # Required.
          "id": "A String", # The actual beacon identifier, as broadcast by the beacon hardware. Must be
              # [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
              # requests, and will be so encoded (with padding) in responses. The base64
              # encoding should be of the binary byte-stream and not any textual (such as
              # hex) representation thereof.
              # Required.
        },
        "beaconName": "A String", # Resource name of this beacon. A beacon name has the format
            # "beacons/N!beaconId" where the beaconId is the base16 ID broadcast by
            # the beacon and N is a code for the beacon's type. Possible values are
            # `3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.
            #
            # This field must be left empty when registering. After reading a beacon,
            # clients can use the name for future operations.
        "expectedStability": "A String", # Expected location stability. This is set when the beacon is registered or
            # updated, not automatically detected in any way.
            # Optional.
        "properties": { # Properties of the beacon device, for example battery type or firmware
            # version.
            # Optional.
          "a_key": "A String",
        },
        "provisioningKey": "A String", # Some beacons may require a user to provide an authorization key before
            # changing any of its configuration (e.g. broadcast frames, transmit power).
            # This field provides a place to store and control access to that key.
            # This field is populated in responses to `GET /v1beta1/beacons/3!beaconId`
            # from users with write access to the given beacon. That is to say: If the
            # user is authorized to write the beacon's confidential data in the service,
            # the service considers them authorized to configure the beacon. Note
            # that this key grants nothing on the service, only on the beacon itself.
      }