"""Generated client library for accessapproval version v1."""
# NOTE: This file is autogenerated and should not be edited by hand.

from __future__ import absolute_import

from apitools.base.py import base_api
from googlecloudsdk.generated_clients.apis.accessapproval.v1 import accessapproval_v1_messages as messages


class AccessapprovalV1(base_api.BaseApiClient):
  """Generated client library for service accessapproval version v1."""

  MESSAGES_MODULE = messages
  BASE_URL = 'https://accessapproval.googleapis.com/'
  MTLS_BASE_URL = 'https://accessapproval.mtls.googleapis.com/'

  _PACKAGE = 'accessapproval'
  _SCOPES = ['https://www.googleapis.com/auth/cloud-platform']
  _VERSION = 'v1'
  _CLIENT_ID = 'CLIENT_ID'
  _CLIENT_SECRET = 'CLIENT_SECRET'
  _USER_AGENT = 'google-cloud-sdk'
  _CLIENT_CLASS_NAME = 'AccessapprovalV1'
  _URL_VERSION = 'v1'
  _API_KEY = None

  def __init__(self, url='', credentials=None,
               get_credentials=True, http=None, model=None,
               log_request=False, log_response=False,
               credentials_args=None, default_global_params=None,
               additional_http_headers=None, response_encoding=None):
    """Create a new accessapproval handle."""
    url = url or self.BASE_URL
    super(AccessapprovalV1, self).__init__(
        url, credentials=credentials,
        get_credentials=get_credentials, http=http, model=model,
        log_request=log_request, log_response=log_response,
        credentials_args=credentials_args,
        default_global_params=default_global_params,
        additional_http_headers=additional_http_headers,
        response_encoding=response_encoding)
    self.folders_approvalRequests = self.FoldersApprovalRequestsService(self)
    self.folders = self.FoldersService(self)
    self.organizations_approvalRequests = self.OrganizationsApprovalRequestsService(self)
    self.organizations = self.OrganizationsService(self)
    self.projects_approvalRequests = self.ProjectsApprovalRequestsService(self)
    self.projects = self.ProjectsService(self)

  class FoldersApprovalRequestsService(base_api.BaseApiService):
    """Service class for the folders_approvalRequests resource."""

    _NAME = 'folders_approvalRequests'

    def __init__(self, client):
      super(AccessapprovalV1.FoldersApprovalRequestsService, self).__init__(client)
      self._upload_configs = {
          }

    def Approve(self, request, global_params=None):
      r"""Approves a request and returns the updated ApprovalRequest. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalFoldersApprovalRequestsApproveRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Approve')
      return self._RunMethod(
          config, request, global_params=global_params)

    Approve.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/approvalRequests/{approvalRequestsId}:approve',
        http_method='POST',
        method_id='accessapproval.folders.approvalRequests.approve',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:approve',
        request_field='approveApprovalRequestMessage',
        request_type_name='AccessapprovalFoldersApprovalRequestsApproveRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Dismiss(self, request, global_params=None):
      r"""Dismisses a request. Returns the updated ApprovalRequest. NOTE: When a request is dismissed, it is considered ignored. Dismissing a request does not prevent access granted by other Access Approval requests. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalFoldersApprovalRequestsDismissRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Dismiss')
      return self._RunMethod(
          config, request, global_params=global_params)

    Dismiss.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/approvalRequests/{approvalRequestsId}:dismiss',
        http_method='POST',
        method_id='accessapproval.folders.approvalRequests.dismiss',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:dismiss',
        request_field='dismissApprovalRequestMessage',
        request_type_name='AccessapprovalFoldersApprovalRequestsDismissRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets an approval request. Returns NOT_FOUND if the request does not exist.

      Args:
        request: (AccessapprovalFoldersApprovalRequestsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(
          config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/approvalRequests/{approvalRequestsId}',
        http_method='GET',
        method_id='accessapproval.folders.approvalRequests.get',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalFoldersApprovalRequestsGetRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Invalidate(self, request, global_params=None):
      r"""Invalidates an existing ApprovalRequest. Returns the updated ApprovalRequest. NOTE: This action revokes Google access based on this approval request. If the resource has other active approvals, access will remain granted. Returns FAILED_PRECONDITION if the request exists but is not in an approved state.

      Args:
        request: (AccessapprovalFoldersApprovalRequestsInvalidateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Invalidate')
      return self._RunMethod(
          config, request, global_params=global_params)

    Invalidate.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/approvalRequests/{approvalRequestsId}:invalidate',
        http_method='POST',
        method_id='accessapproval.folders.approvalRequests.invalidate',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:invalidate',
        request_field='invalidateApprovalRequestMessage',
        request_type_name='AccessapprovalFoldersApprovalRequestsInvalidateRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""Lists approval requests associated with a project, folder, or organization. Approval requests can be filtered by state (pending, active, dismissed). The order is reverse chronological.

      Args:
        request: (AccessapprovalFoldersApprovalRequestsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListApprovalRequestsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(
          config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/approvalRequests',
        http_method='GET',
        method_id='accessapproval.folders.approvalRequests.list',
        ordered_params=['parent'],
        path_params=['parent'],
        query_params=['filter', 'pageSize', 'pageToken'],
        relative_path='v1/{+parent}/approvalRequests',
        request_field='',
        request_type_name='AccessapprovalFoldersApprovalRequestsListRequest',
        response_type_name='ListApprovalRequestsResponse',
        supports_download=False,
    )

  class FoldersService(base_api.BaseApiService):
    """Service class for the folders resource."""

    _NAME = 'folders'

    def __init__(self, client):
      super(AccessapprovalV1.FoldersService, self).__init__(client)
      self._upload_configs = {
          }

    def DeleteAccessApprovalSettings(self, request, global_params=None):
      r"""Deletes the settings associated with a project, folder, or organization. This will have the effect of disabling Access Approval for the resource. Access Approval may remain active based on parent resource settings. To confirm the effective settings, call GetAccessApprovalSettings and verify effective setting is disabled.

      Args:
        request: (AccessapprovalFoldersDeleteAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Empty) The response message.
      """
      config = self.GetMethodConfig('DeleteAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    DeleteAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/accessApprovalSettings',
        http_method='DELETE',
        method_id='accessapproval.folders.deleteAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalFoldersDeleteAccessApprovalSettingsRequest',
        response_type_name='Empty',
        supports_download=False,
    )

    def GetAccessApprovalSettings(self, request, global_params=None):
      r"""Gets the Access Approval settings associated with a project, folder, or organization.

      Args:
        request: (AccessapprovalFoldersGetAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('GetAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/accessApprovalSettings',
        http_method='GET',
        method_id='accessapproval.folders.getAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalFoldersGetAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )

    def GetServiceAccount(self, request, global_params=None):
      r"""Retrieves the service account that is used by Access Approval to access KMS keys for signing approved approval requests.

      Args:
        request: (AccessapprovalFoldersGetServiceAccountRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalServiceAccount) The response message.
      """
      config = self.GetMethodConfig('GetServiceAccount')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetServiceAccount.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/serviceAccount',
        http_method='GET',
        method_id='accessapproval.folders.getServiceAccount',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalFoldersGetServiceAccountRequest',
        response_type_name='AccessApprovalServiceAccount',
        supports_download=False,
    )

    def UpdateAccessApprovalSettings(self, request, global_params=None):
      r"""Updates the settings associated with a project, folder, or organization. Settings to update are determined by the value of field_mask.

      Args:
        request: (AccessapprovalFoldersUpdateAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('UpdateAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    UpdateAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/folders/{foldersId}/accessApprovalSettings',
        http_method='PATCH',
        method_id='accessapproval.folders.updateAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=['updateMask'],
        relative_path='v1/{+name}',
        request_field='accessApprovalSettings',
        request_type_name='AccessapprovalFoldersUpdateAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )

  class OrganizationsApprovalRequestsService(base_api.BaseApiService):
    """Service class for the organizations_approvalRequests resource."""

    _NAME = 'organizations_approvalRequests'

    def __init__(self, client):
      super(AccessapprovalV1.OrganizationsApprovalRequestsService, self).__init__(client)
      self._upload_configs = {
          }

    def Approve(self, request, global_params=None):
      r"""Approves a request and returns the updated ApprovalRequest. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalOrganizationsApprovalRequestsApproveRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Approve')
      return self._RunMethod(
          config, request, global_params=global_params)

    Approve.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/approvalRequests/{approvalRequestsId}:approve',
        http_method='POST',
        method_id='accessapproval.organizations.approvalRequests.approve',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:approve',
        request_field='approveApprovalRequestMessage',
        request_type_name='AccessapprovalOrganizationsApprovalRequestsApproveRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Dismiss(self, request, global_params=None):
      r"""Dismisses a request. Returns the updated ApprovalRequest. NOTE: When a request is dismissed, it is considered ignored. Dismissing a request does not prevent access granted by other Access Approval requests. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalOrganizationsApprovalRequestsDismissRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Dismiss')
      return self._RunMethod(
          config, request, global_params=global_params)

    Dismiss.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/approvalRequests/{approvalRequestsId}:dismiss',
        http_method='POST',
        method_id='accessapproval.organizations.approvalRequests.dismiss',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:dismiss',
        request_field='dismissApprovalRequestMessage',
        request_type_name='AccessapprovalOrganizationsApprovalRequestsDismissRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets an approval request. Returns NOT_FOUND if the request does not exist.

      Args:
        request: (AccessapprovalOrganizationsApprovalRequestsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(
          config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/approvalRequests/{approvalRequestsId}',
        http_method='GET',
        method_id='accessapproval.organizations.approvalRequests.get',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalOrganizationsApprovalRequestsGetRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Invalidate(self, request, global_params=None):
      r"""Invalidates an existing ApprovalRequest. Returns the updated ApprovalRequest. NOTE: This action revokes Google access based on this approval request. If the resource has other active approvals, access will remain granted. Returns FAILED_PRECONDITION if the request exists but is not in an approved state.

      Args:
        request: (AccessapprovalOrganizationsApprovalRequestsInvalidateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Invalidate')
      return self._RunMethod(
          config, request, global_params=global_params)

    Invalidate.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/approvalRequests/{approvalRequestsId}:invalidate',
        http_method='POST',
        method_id='accessapproval.organizations.approvalRequests.invalidate',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:invalidate',
        request_field='invalidateApprovalRequestMessage',
        request_type_name='AccessapprovalOrganizationsApprovalRequestsInvalidateRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""Lists approval requests associated with a project, folder, or organization. Approval requests can be filtered by state (pending, active, dismissed). The order is reverse chronological.

      Args:
        request: (AccessapprovalOrganizationsApprovalRequestsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListApprovalRequestsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(
          config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/approvalRequests',
        http_method='GET',
        method_id='accessapproval.organizations.approvalRequests.list',
        ordered_params=['parent'],
        path_params=['parent'],
        query_params=['filter', 'pageSize', 'pageToken'],
        relative_path='v1/{+parent}/approvalRequests',
        request_field='',
        request_type_name='AccessapprovalOrganizationsApprovalRequestsListRequest',
        response_type_name='ListApprovalRequestsResponse',
        supports_download=False,
    )

  class OrganizationsService(base_api.BaseApiService):
    """Service class for the organizations resource."""

    _NAME = 'organizations'

    def __init__(self, client):
      super(AccessapprovalV1.OrganizationsService, self).__init__(client)
      self._upload_configs = {
          }

    def DeleteAccessApprovalSettings(self, request, global_params=None):
      r"""Deletes the settings associated with a project, folder, or organization. This will have the effect of disabling Access Approval for the resource. Access Approval may remain active based on parent resource settings. To confirm the effective settings, call GetAccessApprovalSettings and verify effective setting is disabled.

      Args:
        request: (AccessapprovalOrganizationsDeleteAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Empty) The response message.
      """
      config = self.GetMethodConfig('DeleteAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    DeleteAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/accessApprovalSettings',
        http_method='DELETE',
        method_id='accessapproval.organizations.deleteAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalOrganizationsDeleteAccessApprovalSettingsRequest',
        response_type_name='Empty',
        supports_download=False,
    )

    def GetAccessApprovalSettings(self, request, global_params=None):
      r"""Gets the Access Approval settings associated with a project, folder, or organization.

      Args:
        request: (AccessapprovalOrganizationsGetAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('GetAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/accessApprovalSettings',
        http_method='GET',
        method_id='accessapproval.organizations.getAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalOrganizationsGetAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )

    def GetServiceAccount(self, request, global_params=None):
      r"""Retrieves the service account that is used by Access Approval to access KMS keys for signing approved approval requests.

      Args:
        request: (AccessapprovalOrganizationsGetServiceAccountRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalServiceAccount) The response message.
      """
      config = self.GetMethodConfig('GetServiceAccount')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetServiceAccount.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/serviceAccount',
        http_method='GET',
        method_id='accessapproval.organizations.getServiceAccount',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalOrganizationsGetServiceAccountRequest',
        response_type_name='AccessApprovalServiceAccount',
        supports_download=False,
    )

    def UpdateAccessApprovalSettings(self, request, global_params=None):
      r"""Updates the settings associated with a project, folder, or organization. Settings to update are determined by the value of field_mask.

      Args:
        request: (AccessapprovalOrganizationsUpdateAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('UpdateAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    UpdateAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/organizations/{organizationsId}/accessApprovalSettings',
        http_method='PATCH',
        method_id='accessapproval.organizations.updateAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=['updateMask'],
        relative_path='v1/{+name}',
        request_field='accessApprovalSettings',
        request_type_name='AccessapprovalOrganizationsUpdateAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )

  class ProjectsApprovalRequestsService(base_api.BaseApiService):
    """Service class for the projects_approvalRequests resource."""

    _NAME = 'projects_approvalRequests'

    def __init__(self, client):
      super(AccessapprovalV1.ProjectsApprovalRequestsService, self).__init__(client)
      self._upload_configs = {
          }

    def Approve(self, request, global_params=None):
      r"""Approves a request and returns the updated ApprovalRequest. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalProjectsApprovalRequestsApproveRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Approve')
      return self._RunMethod(
          config, request, global_params=global_params)

    Approve.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/approvalRequests/{approvalRequestsId}:approve',
        http_method='POST',
        method_id='accessapproval.projects.approvalRequests.approve',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:approve',
        request_field='approveApprovalRequestMessage',
        request_type_name='AccessapprovalProjectsApprovalRequestsApproveRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Dismiss(self, request, global_params=None):
      r"""Dismisses a request. Returns the updated ApprovalRequest. NOTE: When a request is dismissed, it is considered ignored. Dismissing a request does not prevent access granted by other Access Approval requests. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

      Args:
        request: (AccessapprovalProjectsApprovalRequestsDismissRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Dismiss')
      return self._RunMethod(
          config, request, global_params=global_params)

    Dismiss.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/approvalRequests/{approvalRequestsId}:dismiss',
        http_method='POST',
        method_id='accessapproval.projects.approvalRequests.dismiss',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:dismiss',
        request_field='dismissApprovalRequestMessage',
        request_type_name='AccessapprovalProjectsApprovalRequestsDismissRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets an approval request. Returns NOT_FOUND if the request does not exist.

      Args:
        request: (AccessapprovalProjectsApprovalRequestsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(
          config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/approvalRequests/{approvalRequestsId}',
        http_method='GET',
        method_id='accessapproval.projects.approvalRequests.get',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalProjectsApprovalRequestsGetRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def Invalidate(self, request, global_params=None):
      r"""Invalidates an existing ApprovalRequest. Returns the updated ApprovalRequest. NOTE: This action revokes Google access based on this approval request. If the resource has other active approvals, access will remain granted. Returns FAILED_PRECONDITION if the request exists but is not in an approved state.

      Args:
        request: (AccessapprovalProjectsApprovalRequestsInvalidateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ApprovalRequest) The response message.
      """
      config = self.GetMethodConfig('Invalidate')
      return self._RunMethod(
          config, request, global_params=global_params)

    Invalidate.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/approvalRequests/{approvalRequestsId}:invalidate',
        http_method='POST',
        method_id='accessapproval.projects.approvalRequests.invalidate',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}:invalidate',
        request_field='invalidateApprovalRequestMessage',
        request_type_name='AccessapprovalProjectsApprovalRequestsInvalidateRequest',
        response_type_name='ApprovalRequest',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""Lists approval requests associated with a project, folder, or organization. Approval requests can be filtered by state (pending, active, dismissed). The order is reverse chronological.

      Args:
        request: (AccessapprovalProjectsApprovalRequestsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListApprovalRequestsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(
          config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/approvalRequests',
        http_method='GET',
        method_id='accessapproval.projects.approvalRequests.list',
        ordered_params=['parent'],
        path_params=['parent'],
        query_params=['filter', 'pageSize', 'pageToken'],
        relative_path='v1/{+parent}/approvalRequests',
        request_field='',
        request_type_name='AccessapprovalProjectsApprovalRequestsListRequest',
        response_type_name='ListApprovalRequestsResponse',
        supports_download=False,
    )

  class ProjectsService(base_api.BaseApiService):
    """Service class for the projects resource."""

    _NAME = 'projects'

    def __init__(self, client):
      super(AccessapprovalV1.ProjectsService, self).__init__(client)
      self._upload_configs = {
          }

    def DeleteAccessApprovalSettings(self, request, global_params=None):
      r"""Deletes the settings associated with a project, folder, or organization. This will have the effect of disabling Access Approval for the resource. Access Approval may remain active based on parent resource settings. To confirm the effective settings, call GetAccessApprovalSettings and verify effective setting is disabled.

      Args:
        request: (AccessapprovalProjectsDeleteAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Empty) The response message.
      """
      config = self.GetMethodConfig('DeleteAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    DeleteAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/accessApprovalSettings',
        http_method='DELETE',
        method_id='accessapproval.projects.deleteAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalProjectsDeleteAccessApprovalSettingsRequest',
        response_type_name='Empty',
        supports_download=False,
    )

    def GetAccessApprovalSettings(self, request, global_params=None):
      r"""Gets the Access Approval settings associated with a project, folder, or organization.

      Args:
        request: (AccessapprovalProjectsGetAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('GetAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/accessApprovalSettings',
        http_method='GET',
        method_id='accessapproval.projects.getAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalProjectsGetAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )

    def GetServiceAccount(self, request, global_params=None):
      r"""Retrieves the service account that is used by Access Approval to access KMS keys for signing approved approval requests.

      Args:
        request: (AccessapprovalProjectsGetServiceAccountRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalServiceAccount) The response message.
      """
      config = self.GetMethodConfig('GetServiceAccount')
      return self._RunMethod(
          config, request, global_params=global_params)

    GetServiceAccount.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/serviceAccount',
        http_method='GET',
        method_id='accessapproval.projects.getServiceAccount',
        ordered_params=['name'],
        path_params=['name'],
        query_params=[],
        relative_path='v1/{+name}',
        request_field='',
        request_type_name='AccessapprovalProjectsGetServiceAccountRequest',
        response_type_name='AccessApprovalServiceAccount',
        supports_download=False,
    )

    def UpdateAccessApprovalSettings(self, request, global_params=None):
      r"""Updates the settings associated with a project, folder, or organization. Settings to update are determined by the value of field_mask.

      Args:
        request: (AccessapprovalProjectsUpdateAccessApprovalSettingsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (AccessApprovalSettings) The response message.
      """
      config = self.GetMethodConfig('UpdateAccessApprovalSettings')
      return self._RunMethod(
          config, request, global_params=global_params)

    UpdateAccessApprovalSettings.method_config = lambda: base_api.ApiMethodInfo(
        flat_path='v1/projects/{projectsId}/accessApprovalSettings',
        http_method='PATCH',
        method_id='accessapproval.projects.updateAccessApprovalSettings',
        ordered_params=['name'],
        path_params=['name'],
        query_params=['updateMask'],
        relative_path='v1/{+name}',
        request_field='accessApprovalSettings',
        request_type_name='AccessapprovalProjectsUpdateAccessApprovalSettingsRequest',
        response_type_name='AccessApprovalSettings',
        supports_download=False,
    )
