# Copyright (c) 2012-2021, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.

from typing import Optional

from .aws import Action as BaseAction
from .aws import BaseARN

service_name = "AWS Identity and Access Management (IAM)"
prefix = "iam"


class Action(BaseAction):
    def __init__(self, action: Optional[str] = None) -> None:
        super().__init__(prefix, action)


class ARN(BaseARN):
    def __init__(self, resource: str = "", region: str = "", account: str = "") -> None:
        super().__init__(
            service=prefix, resource=resource, region=region, account=account
        )


AddClientIDToOpenIDConnectProvider = Action("AddClientIDToOpenIDConnectProvider")
AddRoleToInstanceProfile = Action("AddRoleToInstanceProfile")
AddUserToGroup = Action("AddUserToGroup")
AttachGroupPolicy = Action("AttachGroupPolicy")
AttachRolePolicy = Action("AttachRolePolicy")
AttachUserPolicy = Action("AttachUserPolicy")
ChangePassword = Action("ChangePassword")
CreateAccessKey = Action("CreateAccessKey")
CreateAccountAlias = Action("CreateAccountAlias")
CreateGroup = Action("CreateGroup")
CreateInstanceProfile = Action("CreateInstanceProfile")
CreateLoginProfile = Action("CreateLoginProfile")
CreateOpenIDConnectProvider = Action("CreateOpenIDConnectProvider")
CreatePolicy = Action("CreatePolicy")
CreatePolicyVersion = Action("CreatePolicyVersion")
CreateRole = Action("CreateRole")
CreateSAMLProvider = Action("CreateSAMLProvider")
CreateServiceLinkedRole = Action("CreateServiceLinkedRole")
CreateServiceSpecificCredential = Action("CreateServiceSpecificCredential")
CreateUser = Action("CreateUser")
CreateVirtualMFADevice = Action("CreateVirtualMFADevice")
DeactivateMFADevice = Action("DeactivateMFADevice")
DeleteAccessKey = Action("DeleteAccessKey")
DeleteAccountAlias = Action("DeleteAccountAlias")
DeleteAccountPasswordPolicy = Action("DeleteAccountPasswordPolicy")
DeleteCloudFrontPublicKey = Action("DeleteCloudFrontPublicKey")
DeleteGroup = Action("DeleteGroup")
DeleteGroupPolicy = Action("DeleteGroupPolicy")
DeleteInstanceProfile = Action("DeleteInstanceProfile")
DeleteLoginProfile = Action("DeleteLoginProfile")
DeleteOpenIDConnectProvider = Action("DeleteOpenIDConnectProvider")
DeletePolicy = Action("DeletePolicy")
DeletePolicyVersion = Action("DeletePolicyVersion")
DeleteRole = Action("DeleteRole")
DeleteRolePermissionsBoundary = Action("DeleteRolePermissionsBoundary")
DeleteRolePolicy = Action("DeleteRolePolicy")
DeleteSAMLProvider = Action("DeleteSAMLProvider")
DeleteSSHPublicKey = Action("DeleteSSHPublicKey")
DeleteServerCertificate = Action("DeleteServerCertificate")
DeleteServiceLinkedRole = Action("DeleteServiceLinkedRole")
DeleteServiceSpecificCredential = Action("DeleteServiceSpecificCredential")
DeleteSigningCertificate = Action("DeleteSigningCertificate")
DeleteUser = Action("DeleteUser")
DeleteUserPermissionsBoundary = Action("DeleteUserPermissionsBoundary")
DeleteUserPolicy = Action("DeleteUserPolicy")
DeleteVirtualMFADevice = Action("DeleteVirtualMFADevice")
DetachGroupPolicy = Action("DetachGroupPolicy")
DetachRolePolicy = Action("DetachRolePolicy")
DetachUserPolicy = Action("DetachUserPolicy")
EnableMFADevice = Action("EnableMFADevice")
FinalizeSmsMfaRegistration = Action("FinalizeSmsMfaRegistration")
GenerateCredentialReport = Action("GenerateCredentialReport")
GenerateOrganizationsAccessReport = Action("GenerateOrganizationsAccessReport")
GenerateServiceLastAccessedDetails = Action("GenerateServiceLastAccessedDetails")
GetAccessKeyLastUsed = Action("GetAccessKeyLastUsed")
GetAccountAuthorizationDetails = Action("GetAccountAuthorizationDetails")
GetAccountEmailAddress = Action("GetAccountEmailAddress")
GetAccountName = Action("GetAccountName")
GetAccountPasswordPolicy = Action("GetAccountPasswordPolicy")
GetAccountSummary = Action("GetAccountSummary")
GetCloudFrontPublicKey = Action("GetCloudFrontPublicKey")
GetContextKeysForCustomPolicy = Action("GetContextKeysForCustomPolicy")
GetContextKeysForPrincipalPolicy = Action("GetContextKeysForPrincipalPolicy")
GetCredentialReport = Action("GetCredentialReport")
GetGroup = Action("GetGroup")
GetGroupPolicy = Action("GetGroupPolicy")
GetInstanceProfile = Action("GetInstanceProfile")
GetLoginProfile = Action("GetLoginProfile")
GetMFADevice = Action("GetMFADevice")
GetOpenIDConnectProvider = Action("GetOpenIDConnectProvider")
GetOrganizationsAccessReport = Action("GetOrganizationsAccessReport")
GetPolicy = Action("GetPolicy")
GetPolicyVersion = Action("GetPolicyVersion")
GetRole = Action("GetRole")
GetRolePolicy = Action("GetRolePolicy")
GetSAMLProvider = Action("GetSAMLProvider")
GetSSHPublicKey = Action("GetSSHPublicKey")
GetServerCertificate = Action("GetServerCertificate")
GetServiceLastAccessedDetails = Action("GetServiceLastAccessedDetails")
GetServiceLastAccessedDetailsWithEntities = Action(
    "GetServiceLastAccessedDetailsWithEntities"
)
GetServiceLinkedRoleDeletionStatus = Action("GetServiceLinkedRoleDeletionStatus")
GetUser = Action("GetUser")
GetUserPolicy = Action("GetUserPolicy")
ListAccessKeys = Action("ListAccessKeys")
ListAccountAliases = Action("ListAccountAliases")
ListAttachedGroupPolicies = Action("ListAttachedGroupPolicies")
ListAttachedRolePolicies = Action("ListAttachedRolePolicies")
ListAttachedUserPolicies = Action("ListAttachedUserPolicies")
ListCloudFrontPublicKeys = Action("ListCloudFrontPublicKeys")
ListEntitiesForPolicy = Action("ListEntitiesForPolicy")
ListGroupPolicies = Action("ListGroupPolicies")
ListGroups = Action("ListGroups")
ListGroupsForUser = Action("ListGroupsForUser")
ListInstanceProfileTags = Action("ListInstanceProfileTags")
ListInstanceProfiles = Action("ListInstanceProfiles")
ListInstanceProfilesForRole = Action("ListInstanceProfilesForRole")
ListMFADeviceTags = Action("ListMFADeviceTags")
ListMFADevices = Action("ListMFADevices")
ListOpenIDConnectProviderTags = Action("ListOpenIDConnectProviderTags")
ListOpenIDConnectProviders = Action("ListOpenIDConnectProviders")
ListPolicies = Action("ListPolicies")
ListPoliciesGrantingServiceAccess = Action("ListPoliciesGrantingServiceAccess")
ListPolicyTags = Action("ListPolicyTags")
ListPolicyVersions = Action("ListPolicyVersions")
ListRolePolicies = Action("ListRolePolicies")
ListRoleTags = Action("ListRoleTags")
ListRoles = Action("ListRoles")
ListSAMLProviderTags = Action("ListSAMLProviderTags")
ListSAMLProviders = Action("ListSAMLProviders")
ListSSHPublicKeys = Action("ListSSHPublicKeys")
ListSTSRegionalEndpointsStatus = Action("ListSTSRegionalEndpointsStatus")
ListServerCertificateTags = Action("ListServerCertificateTags")
ListServerCertificates = Action("ListServerCertificates")
ListServiceSpecificCredentials = Action("ListServiceSpecificCredentials")
ListSigningCertificates = Action("ListSigningCertificates")
ListUserPolicies = Action("ListUserPolicies")
ListUserTags = Action("ListUserTags")
ListUsers = Action("ListUsers")
ListVirtualMFADevices = Action("ListVirtualMFADevices")
PassRole = Action("PassRole")
PutGroupPolicy = Action("PutGroupPolicy")
PutRolePermissionsBoundary = Action("PutRolePermissionsBoundary")
PutRolePolicy = Action("PutRolePolicy")
PutUserPermissionsBoundary = Action("PutUserPermissionsBoundary")
PutUserPolicy = Action("PutUserPolicy")
RemoveClientIDFromOpenIDConnectProvider = Action(
    "RemoveClientIDFromOpenIDConnectProvider"
)
RemoveRoleFromInstanceProfile = Action("RemoveRoleFromInstanceProfile")
RemoveUserFromGroup = Action("RemoveUserFromGroup")
RequestSmsMfaRegistration = Action("RequestSmsMfaRegistration")
ResetServiceSpecificCredential = Action("ResetServiceSpecificCredential")
ResyncMFADevice = Action("ResyncMFADevice")
SetDefaultPolicyVersion = Action("SetDefaultPolicyVersion")
SetSTSRegionalEndpointStatus = Action("SetSTSRegionalEndpointStatus")
SetSecurityTokenServicePreferences = Action("SetSecurityTokenServicePreferences")
SimulateCustomPolicy = Action("SimulateCustomPolicy")
SimulatePrincipalPolicy = Action("SimulatePrincipalPolicy")
TagInstanceProfile = Action("TagInstanceProfile")
TagMFADevice = Action("TagMFADevice")
TagOpenIDConnectProvider = Action("TagOpenIDConnectProvider")
TagPolicy = Action("TagPolicy")
TagRole = Action("TagRole")
TagSAMLProvider = Action("TagSAMLProvider")
TagServerCertificate = Action("TagServerCertificate")
TagUser = Action("TagUser")
UntagInstanceProfile = Action("UntagInstanceProfile")
UntagMFADevice = Action("UntagMFADevice")
UntagOpenIDConnectProvider = Action("UntagOpenIDConnectProvider")
UntagPolicy = Action("UntagPolicy")
UntagRole = Action("UntagRole")
UntagSAMLProvider = Action("UntagSAMLProvider")
UntagServerCertificate = Action("UntagServerCertificate")
UntagUser = Action("UntagUser")
UpdateAccessKey = Action("UpdateAccessKey")
UpdateAccountEmailAddress = Action("UpdateAccountEmailAddress")
UpdateAccountName = Action("UpdateAccountName")
UpdateAccountPasswordPolicy = Action("UpdateAccountPasswordPolicy")
UpdateAssumeRolePolicy = Action("UpdateAssumeRolePolicy")
UpdateCloudFrontPublicKey = Action("UpdateCloudFrontPublicKey")
UpdateGroup = Action("UpdateGroup")
UpdateLoginProfile = Action("UpdateLoginProfile")
UpdateOpenIDConnectProviderThumbprint = Action("UpdateOpenIDConnectProviderThumbprint")
UpdateRole = Action("UpdateRole")
UpdateRoleDescription = Action("UpdateRoleDescription")
UpdateSAMLProvider = Action("UpdateSAMLProvider")
UpdateSSHPublicKey = Action("UpdateSSHPublicKey")
UpdateServerCertificate = Action("UpdateServerCertificate")
UpdateServiceSpecificCredential = Action("UpdateServiceSpecificCredential")
UpdateSigningCertificate = Action("UpdateSigningCertificate")
UpdateUser = Action("UpdateUser")
UploadCloudFrontPublicKey = Action("UploadCloudFrontPublicKey")
UploadSSHPublicKey = Action("UploadSSHPublicKey")
UploadServerCertificate = Action("UploadServerCertificate")
UploadSigningCertificate = Action("UploadSigningCertificate")
