Google Identity and Access Management (IAM) API . projects . serviceAccounts

Instance Methods

keys()

Returns the keys Resource.

create(name, body, x__xgafv=None)

Creates a ServiceAccount

delete(name, x__xgafv=None)

Deletes a ServiceAccount.

get(name, x__xgafv=None)

Gets a ServiceAccount.

getIamPolicy(resource, x__xgafv=None)

Returns the IAM access control policy for a

list(name, pageToken=None, x__xgafv=None, pageSize=None)

Lists ServiceAccounts for a project.

list_next(previous_request, previous_response)

Retrieves the next page of results.

setIamPolicy(resource, body, x__xgafv=None)

Sets the IAM access control policy for a

signBlob(name, body, x__xgafv=None)

Signs a blob using a service account's system-managed private key.

signJwt(name, body, x__xgafv=None)

Signs a JWT using a service account's system-managed private key.

testIamPermissions(resource, body, x__xgafv=None)

Tests the specified permissions against the IAM access control policy

update(name, body, x__xgafv=None)

Updates a ServiceAccount.

Method Details

create(name, body, x__xgafv=None)
Creates a ServiceAccount
and returns it.

Args:
  name: string, Required. The resource name of the project associated with the service
accounts, such as `projects/my-project-123`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The service account create request.
    "serviceAccount": { # A service account in the Identity and Access Management API. # The ServiceAccount resource to create.
        # Currently, only the following values are user assignable:
        # `display_name` .
        #
        # To create a service account, specify the `project_id` and the `account_id`
        # for the account.  The `account_id` is unique within the project, and is used
        # to generate the service account email address and a stable
        # `unique_id`.
        #
        # If the account already exists, the account's resource name is returned
        # in util::Status's ResourceInfo.resource_name in the format of
        # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
        # use the name in other methods to access the account.
        #
        # All other methods can identify the service account using the format
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
        # Using `-` as a wildcard for the project will infer the project from
        # the account. The `account` value can be the `email` address or the
        # `unique_id` of the service account.
      "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
          # This is used in conjunction with the OAuth2 clientconfig API to make
          # three legged OAuth2 (3LO) flows to access the data of Google users.
      "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
          # fewer than 100 UTF-8 bytes.
      "name": "A String", # The resource name of the service account in the following format:
          # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
          #
          # Requests using `-` as a wildcard for the project will infer the project
          # from the `account` and the `account` value can be the `email` address or
          # the `unique_id` of the service account.
          #
          # In responses the resource name will always be in the format
          # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
      "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
      "etag": "A String", # Used to perform a consistent read-modify-write.
      "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
      "email": "A String", # @OutputOnly The email address of the service account.
    },
    "accountId": "A String", # Required. The account id that is used to generate the service account
        # email address and a stable unique id. It is unique within a project,
        # must be 6-30 characters long, and match the regular expression
        # `[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A service account in the Identity and Access Management API.
      #
      # To create a service account, specify the `project_id` and the `account_id`
      # for the account.  The `account_id` is unique within the project, and is used
      # to generate the service account email address and a stable
      # `unique_id`.
      #
      # If the account already exists, the account's resource name is returned
      # in util::Status's ResourceInfo.resource_name in the format of
      # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
      # use the name in other methods to access the account.
      #
      # All other methods can identify the service account using the format
      # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
      # Using `-` as a wildcard for the project will infer the project from
      # the account. The `account` value can be the `email` address or the
      # `unique_id` of the service account.
    "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
        # This is used in conjunction with the OAuth2 clientconfig API to make
        # three legged OAuth2 (3LO) flows to access the data of Google users.
    "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
        # fewer than 100 UTF-8 bytes.
    "name": "A String", # The resource name of the service account in the following format:
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
        #
        # Requests using `-` as a wildcard for the project will infer the project
        # from the `account` and the `account` value can be the `email` address or
        # the `unique_id` of the service account.
        #
        # In responses the resource name will always be in the format
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
    "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
    "etag": "A String", # Used to perform a consistent read-modify-write.
    "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
    "email": "A String", # @OutputOnly The email address of the service account.
  }
delete(name, x__xgafv=None)
Deletes a ServiceAccount.

Args:
  name: string, The resource name of the service account in the following format:
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
Using `-` as a wildcard for the project will infer the project from
the account. The `account` value can be the `email` address or the
`unique_id` of the service account. (required)
  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(name, x__xgafv=None)
Gets a ServiceAccount.

Args:
  name: string, The resource name of the service account in the following format:
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
Using `-` as a wildcard for the project will infer the project from
the account. The `account` value can be the `email` address or the
`unique_id` of the service account. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A service account in the Identity and Access Management API.
      #
      # To create a service account, specify the `project_id` and the `account_id`
      # for the account.  The `account_id` is unique within the project, and is used
      # to generate the service account email address and a stable
      # `unique_id`.
      #
      # If the account already exists, the account's resource name is returned
      # in util::Status's ResourceInfo.resource_name in the format of
      # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
      # use the name in other methods to access the account.
      #
      # All other methods can identify the service account using the format
      # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
      # Using `-` as a wildcard for the project will infer the project from
      # the account. The `account` value can be the `email` address or the
      # `unique_id` of the service account.
    "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
        # This is used in conjunction with the OAuth2 clientconfig API to make
        # three legged OAuth2 (3LO) flows to access the data of Google users.
    "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
        # fewer than 100 UTF-8 bytes.
    "name": "A String", # The resource name of the service account in the following format:
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
        #
        # Requests using `-` as a wildcard for the project will infer the project
        # from the `account` and the `account` value can be the `email` address or
        # the `unique_id` of the service account.
        #
        # In responses the resource name will always be in the format
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
    "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
    "etag": "A String", # Used to perform a consistent read-modify-write.
    "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
    "email": "A String", # @OutputOnly The email address of the service account.
  }
getIamPolicy(resource, x__xgafv=None)
Returns the IAM access control policy for a
ServiceAccount.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested.
See the operation documentation for the appropriate value for this field. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Defines an Identity and Access Management (IAM) policy. It is used to
      # specify access control policies for Cloud Platform resources.
      #
      #
      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
      # `members` to a `role`, where the members can be user accounts, Google groups,
      # Google domains, and service accounts. A `role` is a named list of permissions
      # defined by IAM.
      #
      # **Example**
      #
      #     {
      #       "bindings": [
      #         {
      #           "role": "roles/owner",
      #           "members": [
      #             "user:mike@example.com",
      #             "group:admins@example.com",
      #             "domain:google.com",
      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
      #           ]
      #         },
      #         {
      #           "role": "roles/viewer",
      #           "members": ["user:sean@example.com"]
      #         }
      #       ]
      #     }
      #
      # For a description of IAM and its features, see the
      # [IAM developer's guide](https://cloud.google.com/iam).
    "bindings": [ # Associates a list of `members` to a `role`.
        # Multiple `bindings` must not be specified for the same `role`.
        # `bindings` with no members will result in an error.
      { # Associates `members` with a `role`.
        "role": "A String", # Role that is assigned to `members`.
            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
            # Required
        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
            # `members` can have the following values:
            #
            # * `allUsers`: A special identifier that represents anyone who is
            #    on the internet; with or without a Google account.
            #
            # * `allAuthenticatedUsers`: A special identifier that represents anyone
            #    who is authenticated with a Google account or a service account.
            #
            # * `user:{emailid}`: An email address that represents a specific Google
            #    account. For example, `alice@gmail.com` or `joe@example.com`.
            #
            #
            # * `serviceAccount:{emailid}`: An email address that represents a service
            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
            #
            # * `group:{emailid}`: An email address that represents a Google group.
            #    For example, `admins@example.com`.
            #
            #
            # * `domain:{domain}`: A Google Apps domain name that represents all the
            #    users of that domain. For example, `google.com` or `example.com`.
            #
          "A String",
        ],
      },
    ],
    "etag": "A String", # `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 blindly.
    "version": 42, # Version of the `Policy`. The default version is 0.
  }
list(name, pageToken=None, x__xgafv=None, pageSize=None)
Lists ServiceAccounts for a project.

Args:
  name: string, Required. The resource name of the project associated with the service
accounts, such as `projects/my-project-123`. (required)
  pageToken: string, Optional pagination token returned in an earlier
ListServiceAccountsResponse.next_page_token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageSize: integer, Optional limit on the number of service accounts to include in the
response. Further accounts can subsequently be obtained by including the
ListServiceAccountsResponse.next_page_token
in a subsequent request.

Returns:
  An object of the form:

    { # The service account list response.
    "nextPageToken": "A String", # To retrieve the next page of results, set
        # ListServiceAccountsRequest.page_token
        # to this value.
    "accounts": [ # The list of matching service accounts.
      { # A service account in the Identity and Access Management API.
          #
          # To create a service account, specify the `project_id` and the `account_id`
          # for the account.  The `account_id` is unique within the project, and is used
          # to generate the service account email address and a stable
          # `unique_id`.
          #
          # If the account already exists, the account's resource name is returned
          # in util::Status's ResourceInfo.resource_name in the format of
          # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
          # use the name in other methods to access the account.
          #
          # All other methods can identify the service account using the format
          # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
          # Using `-` as a wildcard for the project will infer the project from
          # the account. The `account` value can be the `email` address or the
          # `unique_id` of the service account.
        "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
            # This is used in conjunction with the OAuth2 clientconfig API to make
            # three legged OAuth2 (3LO) flows to access the data of Google users.
        "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
            # fewer than 100 UTF-8 bytes.
        "name": "A String", # The resource name of the service account in the following format:
            # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
            #
            # Requests using `-` as a wildcard for the project will infer the project
            # from the `account` and the `account` value can be the `email` address or
            # the `unique_id` of the service account.
            #
            # In responses the resource name will always be in the format
            # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
        "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
        "etag": "A String", # Used to perform a consistent read-modify-write.
        "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
        "email": "A String", # @OutputOnly The email address of the service account.
      },
    ],
  }
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.
    
setIamPolicy(resource, body, x__xgafv=None)
Sets the IAM access control policy for a
ServiceAccount.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified.
See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
        # the policy is limited to a few 10s of KB. An empty policy is a
        # valid policy but certain Cloud Platform services (such as Projects)
        # might reject them.
        # specify access control policies for Cloud Platform resources.
        #
        #
        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
        # `members` to a `role`, where the members can be user accounts, Google groups,
        # Google domains, and service accounts. A `role` is a named list of permissions
        # defined by IAM.
        #
        # **Example**
        #
        #     {
        #       "bindings": [
        #         {
        #           "role": "roles/owner",
        #           "members": [
        #             "user:mike@example.com",
        #             "group:admins@example.com",
        #             "domain:google.com",
        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
        #           ]
        #         },
        #         {
        #           "role": "roles/viewer",
        #           "members": ["user:sean@example.com"]
        #         }
        #       ]
        #     }
        #
        # For a description of IAM and its features, see the
        # [IAM developer's guide](https://cloud.google.com/iam).
      "bindings": [ # Associates a list of `members` to a `role`.
          # Multiple `bindings` must not be specified for the same `role`.
          # `bindings` with no members will result in an error.
        { # Associates `members` with a `role`.
          "role": "A String", # Role that is assigned to `members`.
              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
              # Required
          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
              # `members` can have the following values:
              #
              # * `allUsers`: A special identifier that represents anyone who is
              #    on the internet; with or without a Google account.
              #
              # * `allAuthenticatedUsers`: A special identifier that represents anyone
              #    who is authenticated with a Google account or a service account.
              #
              # * `user:{emailid}`: An email address that represents a specific Google
              #    account. For example, `alice@gmail.com` or `joe@example.com`.
              #
              #
              # * `serviceAccount:{emailid}`: An email address that represents a service
              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
              #
              # * `group:{emailid}`: An email address that represents a Google group.
              #    For example, `admins@example.com`.
              #
              #
              # * `domain:{domain}`: A Google Apps domain name that represents all the
              #    users of that domain. For example, `google.com` or `example.com`.
              #
            "A String",
          ],
        },
      ],
      "etag": "A String", # `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 blindly.
      "version": 42, # Version of the `Policy`. The default version is 0.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Defines an Identity and Access Management (IAM) policy. It is used to
      # specify access control policies for Cloud Platform resources.
      #
      #
      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
      # `members` to a `role`, where the members can be user accounts, Google groups,
      # Google domains, and service accounts. A `role` is a named list of permissions
      # defined by IAM.
      #
      # **Example**
      #
      #     {
      #       "bindings": [
      #         {
      #           "role": "roles/owner",
      #           "members": [
      #             "user:mike@example.com",
      #             "group:admins@example.com",
      #             "domain:google.com",
      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
      #           ]
      #         },
      #         {
      #           "role": "roles/viewer",
      #           "members": ["user:sean@example.com"]
      #         }
      #       ]
      #     }
      #
      # For a description of IAM and its features, see the
      # [IAM developer's guide](https://cloud.google.com/iam).
    "bindings": [ # Associates a list of `members` to a `role`.
        # Multiple `bindings` must not be specified for the same `role`.
        # `bindings` with no members will result in an error.
      { # Associates `members` with a `role`.
        "role": "A String", # Role that is assigned to `members`.
            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
            # Required
        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
            # `members` can have the following values:
            #
            # * `allUsers`: A special identifier that represents anyone who is
            #    on the internet; with or without a Google account.
            #
            # * `allAuthenticatedUsers`: A special identifier that represents anyone
            #    who is authenticated with a Google account or a service account.
            #
            # * `user:{emailid}`: An email address that represents a specific Google
            #    account. For example, `alice@gmail.com` or `joe@example.com`.
            #
            #
            # * `serviceAccount:{emailid}`: An email address that represents a service
            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
            #
            # * `group:{emailid}`: An email address that represents a Google group.
            #    For example, `admins@example.com`.
            #
            #
            # * `domain:{domain}`: A Google Apps domain name that represents all the
            #    users of that domain. For example, `google.com` or `example.com`.
            #
          "A String",
        ],
      },
    ],
    "etag": "A String", # `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 blindly.
    "version": 42, # Version of the `Policy`. The default version is 0.
  }
signBlob(name, body, x__xgafv=None)
Signs a blob using a service account's system-managed private key.

Args:
  name: string, The resource name of the service account in the following format:
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
Using `-` as a wildcard for the project will infer the project from
the account. The `account` value can be the `email` address or the
`unique_id` of the service account. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The service account sign blob request.
    "bytesToSign": "A String", # The bytes to sign.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The service account sign blob response.
    "keyId": "A String", # The id of the key used to sign the blob.
    "signature": "A String", # The signed blob.
  }
signJwt(name, body, x__xgafv=None)
Signs a JWT using a service account's system-managed private key.

If no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an
an expiry time of one hour by default. If you request an expiry time of
more than one hour, the request will fail.

Args:
  name: string, The resource name of the service account in the following format:
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
Using `-` as a wildcard for the project will infer the project from
the account. The `account` value can be the `email` address or the
`unique_id` of the service account. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The service account sign JWT request.
    "payload": "A String", # The JWT payload to sign, a JSON JWT Claim set.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The service account sign JWT response.
    "keyId": "A String", # The id of the key used to sign the JWT.
    "signedJwt": "A String", # The signed JWT.
  }
testIamPermissions(resource, body, x__xgafv=None)
Tests the specified permissions against the IAM access control policy
for a ServiceAccount.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested.
See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
        # wildcards (such as '*' or 'storage.*') are not allowed. For more
        # information see
        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
      "A String",
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for `TestIamPermissions` method.
    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
        # allowed.
      "A String",
    ],
  }
update(name, body, x__xgafv=None)
Updates a ServiceAccount.

Currently, only the following fields are updatable:
`display_name` .
The `etag` is mandatory.

Args:
  name: string, The resource name of the service account in the following format:
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.

Requests using `-` as a wildcard for the project will infer the project
from the `account` and the `account` value can be the `email` address or
the `unique_id` of the service account.

In responses the resource name will always be in the format
`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A service account in the Identity and Access Management API.
    # 
    # To create a service account, specify the `project_id` and the `account_id`
    # for the account.  The `account_id` is unique within the project, and is used
    # to generate the service account email address and a stable
    # `unique_id`.
    # 
    # If the account already exists, the account's resource name is returned
    # in util::Status's ResourceInfo.resource_name in the format of
    # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
    # use the name in other methods to access the account.
    # 
    # All other methods can identify the service account using the format
    # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
    # Using `-` as a wildcard for the project will infer the project from
    # the account. The `account` value can be the `email` address or the
    # `unique_id` of the service account.
  "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
      # This is used in conjunction with the OAuth2 clientconfig API to make
      # three legged OAuth2 (3LO) flows to access the data of Google users.
  "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
      # fewer than 100 UTF-8 bytes.
  "name": "A String", # The resource name of the service account in the following format:
      # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
      # 
      # Requests using `-` as a wildcard for the project will infer the project
      # from the `account` and the `account` value can be the `email` address or
      # the `unique_id` of the service account.
      # 
      # In responses the resource name will always be in the format
      # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
  "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
  "etag": "A String", # Used to perform a consistent read-modify-write.
  "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
  "email": "A String", # @OutputOnly The email address of the service account.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A service account in the Identity and Access Management API.
      #
      # To create a service account, specify the `project_id` and the `account_id`
      # for the account.  The `account_id` is unique within the project, and is used
      # to generate the service account email address and a stable
      # `unique_id`.
      #
      # If the account already exists, the account's resource name is returned
      # in util::Status's ResourceInfo.resource_name in the format of
      # projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can
      # use the name in other methods to access the account.
      #
      # All other methods can identify the service account using the format
      # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
      # Using `-` as a wildcard for the project will infer the project from
      # the account. The `account` value can be the `email` address or the
      # `unique_id` of the service account.
    "oauth2ClientId": "A String", # @OutputOnly. The OAuth2 client id for the service account.
        # This is used in conjunction with the OAuth2 clientconfig API to make
        # three legged OAuth2 (3LO) flows to access the data of Google users.
    "displayName": "A String", # Optional. A user-specified description of the service account.  Must be
        # fewer than 100 UTF-8 bytes.
    "name": "A String", # The resource name of the service account in the following format:
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
        #
        # Requests using `-` as a wildcard for the project will infer the project
        # from the `account` and the `account` value can be the `email` address or
        # the `unique_id` of the service account.
        #
        # In responses the resource name will always be in the format
        # `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.
    "projectId": "A String", # @OutputOnly The id of the project that owns the service account.
    "etag": "A String", # Used to perform a consistent read-modify-write.
    "uniqueId": "A String", # @OutputOnly The unique and stable id of the service account.
    "email": "A String", # @OutputOnly The email address of the service account.
  }