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

## Instance Methods

Returns the keys Resource.

Creates a ServiceAccount

Deletes a ServiceAccount.

Gets a ServiceAccount.

Returns the IAM access control policy for a

Lists ServiceAccounts for a project.

Retrieves the next page of results.

Sets the IAM access control policy for a

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

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

Tests the specified permissions against the IAM access control policy

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.
      }