Packages
google_api_spanner
0.13.0
0.48.0
0.47.1
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.1
0.42.0
0.41.1
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.7
0.34.6
0.34.5
0.34.4
0.34.3
0.34.2
0.34.1
0.34.0
0.33.0
0.32.1
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.1
0.25.0
0.24.0
0.23.1
0.23.0
0.22.1
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
0.2.0
0.1.0
0.0.1
Cloud Spanner API client library. Cloud Spanner is a managed, mission-critical, globally consistent and scalable relational database service.
Current section
Files
Jump to
Current section
Files
lib/google_api/spanner/v1/model/policy.ex
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.
defmodule GoogleApi.Spanner.V1.Model.Policy do
@moduledoc """
Defines an Identity and Access Management (IAM) policy. It is used to
specify access control policies for Cloud Platform resources.
A `Policy` is a collection of `bindings`. A `binding` binds one or more
`members` to a single `role`. Members can be user accounts, service accounts,
Google groups, and domains (such as G Suite). A `role` is a named list of
permissions (defined by IAM or configured by users). A `binding` can
optionally specify a `condition`, which is a logic expression that further
constrains the role binding based on attributes about the request and/or
target resource.
**JSON Example**
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:mike@example.com",
"group:admins@example.com",
"domain:google.com",
"serviceAccount:my-project-id@appspot.gserviceaccount.com"
]
},
{
"role": "roles/resourcemanager.organizationViewer",
"members": ["user:eve@example.com"],
"condition": {
"title": "expirable access",
"description": "Does not grant access after Sep 2020",
"expression": "request.time <
timestamp('2020-10-01T00:00:00.000Z')",
}
}
]
}
**YAML Example**
bindings:
- members:
- user:mike@example.com
- group:admins@example.com
- domain:google.com
- serviceAccount:my-project-id@appspot.gserviceaccount.com
role: roles/resourcemanager.organizationAdmin
- members:
- user:eve@example.com
role: roles/resourcemanager.organizationViewer
condition:
title: expirable access
description: Does not grant access after Sep 2020
expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
For a description of IAM and its features, see the
[IAM developer's guide](https://cloud.google.com/iam/docs).
## Attributes
* `bindings` (*type:* `list(GoogleApi.Spanner.V1.Model.Binding.t)`, *default:* `nil`) - Associates a list of `members` to a `role`. Optionally may specify a
`condition` that determines when binding is in effect.
`bindings` with no members will result in an error.
* `etag` (*type:* `String.t`, *default:* `nil`) - `etag` is used for optimistic concurrency control as a way to help
prevent simultaneous updates of a policy from overwriting each other.
It is strongly suggested that systems make use of the `etag` in the
read-modify-write cycle to perform policy updates in order to avoid race
conditions: An `etag` is returned in the response to `getIamPolicy`, and
systems are expected to put that etag in the request to `setIamPolicy` to
ensure that their change will be applied to the same version of the policy.
If no `etag` is provided in the call to `setIamPolicy`, then the existing
policy is overwritten. Due to blind-set semantics of an etag-less policy,
'setIamPolicy' will not fail even if either of incoming or stored policy
does not meet the version requirements.
* `version` (*type:* `integer()`, *default:* `nil`) - Specifies the format of the policy.
Valid values are 0, 1, and 3. Requests specifying an invalid value will be
rejected.
Operations affecting conditional bindings must specify version 3. This can
be either setting a conditional policy, modifying a conditional binding,
or removing a conditional binding from the stored conditional policy.
Operations on non-conditional policies may specify any valid value or
leave the field unset.
If no etag is provided in the call to `setIamPolicy`, any version
compliance checks on the incoming and/or stored policy is skipped.
"""
use GoogleApi.Gax.ModelBase
@type t :: %__MODULE__{
:bindings => list(GoogleApi.Spanner.V1.Model.Binding.t()),
:etag => String.t(),
:version => integer()
}
field(:bindings, as: GoogleApi.Spanner.V1.Model.Binding, type: :list)
field(:etag)
field(:version)
end
defimpl Poison.Decoder, for: GoogleApi.Spanner.V1.Model.Policy do
def decode(value, options) do
GoogleApi.Spanner.V1.Model.Policy.decode(value, options)
end
end
defimpl Poison.Encoder, for: GoogleApi.Spanner.V1.Model.Policy do
def encode(value, options) do
GoogleApi.Gax.ModelBase.encode(value, options)
end
end