type: google.api.Service
config_version: 2
name: iam-meta-api.googleapis.com
title: IAM Meta API

apis:
- name: google.iam.v1.IAMPolicy

types:
- name: google.iam.v1.PolicyDelta

documentation:
  summary: Manages access control for Google Cloud Platform resources.
  overview: |-
    # Google Identity and Access Management (IAM) API

    Documentation of the access control API that will be implemented by all
    1st party services provided by the Google Cloud Platform (like Cloud
    Storage, Compute Engine, App Engine).

    Any implementation of an API that offers access control features
    will implement the google.iam.v1.IAMPolicy interface.

    ## Data model

    Access control is applied when a principal (user or service account),
    takes some action on a resource exposed by a service. Resources,
    identified by
    URI-like names, are the unit of access control specification. It is up to
    the service implementations to choose what granularity of access control
    to support and what set of actions (permissions) to support for the
    resources
    they provide. For example one database service may allow access control to
    be specified only at the Table level, whereas another might allow access
    control to also be specified at the Column level.

    This is intentionally not a CRUD style API because access control policies
    are created and deleted implicitly with the resources to which they are
    attached.

    ## Policy

    A `Policy` consists of a list of bindings. A `Binding` binds a set of
    members to a role, where the members can include user accounts, user
    groups, user
    domains, and service accounts. A role is a named set of permissions,
    defined by the IAM system. The definition of a role is outside the
    policy.

    A permission check involves determining the roles that include the
    specified permission, and then determining if the principal specified by
    the check is a member of a binding to at least one of these roles. The
    membership check is recursive when a group is bound to a role.
  rules:
  - selector: google.iam.v1.IAMPolicy.GetIamPolicy
    description: |-
      Gets the access control policy for a resource. Returns an empty policy
      if the resource exists and does not have a policy set.

  - selector: google.iam.v1.IAMPolicy.SetIamPolicy
    description: |-
      Sets the access control policy on the specified resource. Replaces
      any existing policy.

  - selector: google.iam.v1.IAMPolicy.TestIamPermissions
    description: |-
      Returns permissions that a caller has on the specified resource. If the
      resource does not exist, this will return an empty set of
      permissions, not a NOT_FOUND error.

      Note: This operation is designed to be used for building
      permission-aware UIs and command-line tools, not for authorization
      checking. This operation may "fail open" without warning.

http:
  rules:
  - selector: google.iam.v1.IAMPolicy.GetIamPolicy
    post: '/v1/{resource=**}:getIamPolicy'
    body: '*'
  - selector: google.iam.v1.IAMPolicy.SetIamPolicy
    post: '/v1/{resource=**}:setIamPolicy'
    body: '*'
  - selector: google.iam.v1.IAMPolicy.TestIamPermissions
    post: '/v1/{resource=**}:testIamPermissions'
    body: '*'
