packages feed

amazonka-certificatemanager-pca-2.0: gen/Amazonka/CertificateManagerPCA/Types.hs

{-# LANGUAGE DisambiguateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CertificateManagerPCA.Types
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CertificateManagerPCA.Types
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    _CertificateMismatchException,
    _ConcurrentModificationException,
    _InvalidArgsException,
    _InvalidArnException,
    _InvalidNextTokenException,
    _InvalidPolicyException,
    _InvalidRequestException,
    _InvalidStateException,
    _InvalidTagException,
    _LimitExceededException,
    _LockoutPreventedException,
    _MalformedCSRException,
    _MalformedCertificateException,
    _PermissionAlreadyExistsException,
    _RequestAlreadyProcessedException,
    _RequestFailedException,
    _RequestInProgressException,
    _ResourceNotFoundException,
    _TooManyTagsException,

    -- * AccessMethodType
    AccessMethodType (..),

    -- * ActionType
    ActionType (..),

    -- * AuditReportResponseFormat
    AuditReportResponseFormat (..),

    -- * AuditReportStatus
    AuditReportStatus (..),

    -- * CertificateAuthorityStatus
    CertificateAuthorityStatus (..),

    -- * CertificateAuthorityType
    CertificateAuthorityType (..),

    -- * CertificateAuthorityUsageMode
    CertificateAuthorityUsageMode (..),

    -- * ExtendedKeyUsageType
    ExtendedKeyUsageType (..),

    -- * FailureReason
    FailureReason (..),

    -- * KeyAlgorithm
    KeyAlgorithm (..),

    -- * KeyStorageSecurityStandard
    KeyStorageSecurityStandard (..),

    -- * PolicyQualifierId
    PolicyQualifierId (..),

    -- * ResourceOwner
    ResourceOwner (..),

    -- * RevocationReason
    RevocationReason (..),

    -- * S3ObjectAcl
    S3ObjectAcl (..),

    -- * SigningAlgorithm
    SigningAlgorithm (..),

    -- * ValidityPeriodType
    ValidityPeriodType (..),

    -- * ASN1Subject
    ASN1Subject (..),
    newASN1Subject,
    aSN1Subject_commonName,
    aSN1Subject_country,
    aSN1Subject_customAttributes,
    aSN1Subject_distinguishedNameQualifier,
    aSN1Subject_generationQualifier,
    aSN1Subject_givenName,
    aSN1Subject_initials,
    aSN1Subject_locality,
    aSN1Subject_organization,
    aSN1Subject_organizationalUnit,
    aSN1Subject_pseudonym,
    aSN1Subject_serialNumber,
    aSN1Subject_state,
    aSN1Subject_surname,
    aSN1Subject_title,

    -- * AccessDescription
    AccessDescription (..),
    newAccessDescription,
    accessDescription_accessMethod,
    accessDescription_accessLocation,

    -- * AccessMethod
    AccessMethod (..),
    newAccessMethod,
    accessMethod_accessMethodType,
    accessMethod_customObjectIdentifier,

    -- * ApiPassthrough
    ApiPassthrough (..),
    newApiPassthrough,
    apiPassthrough_extensions,
    apiPassthrough_subject,

    -- * CertificateAuthority
    CertificateAuthority (..),
    newCertificateAuthority,
    certificateAuthority_arn,
    certificateAuthority_certificateAuthorityConfiguration,
    certificateAuthority_createdAt,
    certificateAuthority_failureReason,
    certificateAuthority_keyStorageSecurityStandard,
    certificateAuthority_lastStateChangeAt,
    certificateAuthority_notAfter,
    certificateAuthority_notBefore,
    certificateAuthority_ownerAccount,
    certificateAuthority_restorableUntil,
    certificateAuthority_revocationConfiguration,
    certificateAuthority_serial,
    certificateAuthority_status,
    certificateAuthority_type,
    certificateAuthority_usageMode,

    -- * CertificateAuthorityConfiguration
    CertificateAuthorityConfiguration (..),
    newCertificateAuthorityConfiguration,
    certificateAuthorityConfiguration_csrExtensions,
    certificateAuthorityConfiguration_keyAlgorithm,
    certificateAuthorityConfiguration_signingAlgorithm,
    certificateAuthorityConfiguration_subject,

    -- * CrlConfiguration
    CrlConfiguration (..),
    newCrlConfiguration,
    crlConfiguration_customCname,
    crlConfiguration_expirationInDays,
    crlConfiguration_s3BucketName,
    crlConfiguration_s3ObjectAcl,
    crlConfiguration_enabled,

    -- * CsrExtensions
    CsrExtensions (..),
    newCsrExtensions,
    csrExtensions_keyUsage,
    csrExtensions_subjectInformationAccess,

    -- * CustomAttribute
    CustomAttribute (..),
    newCustomAttribute,
    customAttribute_objectIdentifier,
    customAttribute_value,

    -- * CustomExtension
    CustomExtension (..),
    newCustomExtension,
    customExtension_critical,
    customExtension_objectIdentifier,
    customExtension_value,

    -- * EdiPartyName
    EdiPartyName (..),
    newEdiPartyName,
    ediPartyName_nameAssigner,
    ediPartyName_partyName,

    -- * ExtendedKeyUsage
    ExtendedKeyUsage (..),
    newExtendedKeyUsage,
    extendedKeyUsage_extendedKeyUsageObjectIdentifier,
    extendedKeyUsage_extendedKeyUsageType,

    -- * Extensions
    Extensions (..),
    newExtensions,
    extensions_certificatePolicies,
    extensions_customExtensions,
    extensions_extendedKeyUsage,
    extensions_keyUsage,
    extensions_subjectAlternativeNames,

    -- * GeneralName
    GeneralName (..),
    newGeneralName,
    generalName_directoryName,
    generalName_dnsName,
    generalName_ediPartyName,
    generalName_ipAddress,
    generalName_otherName,
    generalName_registeredId,
    generalName_rfc822Name,
    generalName_uniformResourceIdentifier,

    -- * KeyUsage
    KeyUsage (..),
    newKeyUsage,
    keyUsage_cRLSign,
    keyUsage_dataEncipherment,
    keyUsage_decipherOnly,
    keyUsage_digitalSignature,
    keyUsage_encipherOnly,
    keyUsage_keyAgreement,
    keyUsage_keyCertSign,
    keyUsage_keyEncipherment,
    keyUsage_nonRepudiation,

    -- * OcspConfiguration
    OcspConfiguration (..),
    newOcspConfiguration,
    ocspConfiguration_ocspCustomCname,
    ocspConfiguration_enabled,

    -- * OtherName
    OtherName (..),
    newOtherName,
    otherName_typeId,
    otherName_value,

    -- * Permission
    Permission (..),
    newPermission,
    permission_actions,
    permission_certificateAuthorityArn,
    permission_createdAt,
    permission_policy,
    permission_principal,
    permission_sourceAccount,

    -- * PolicyInformation
    PolicyInformation (..),
    newPolicyInformation,
    policyInformation_policyQualifiers,
    policyInformation_certPolicyId,

    -- * PolicyQualifierInfo
    PolicyQualifierInfo (..),
    newPolicyQualifierInfo,
    policyQualifierInfo_policyQualifierId,
    policyQualifierInfo_qualifier,

    -- * Qualifier
    Qualifier (..),
    newQualifier,
    qualifier_cpsUri,

    -- * RevocationConfiguration
    RevocationConfiguration (..),
    newRevocationConfiguration,
    revocationConfiguration_crlConfiguration,
    revocationConfiguration_ocspConfiguration,

    -- * Tag
    Tag (..),
    newTag,
    tag_value,
    tag_key,

    -- * Validity
    Validity (..),
    newValidity,
    validity_value,
    validity_type,
  )
where

import Amazonka.CertificateManagerPCA.Types.ASN1Subject
import Amazonka.CertificateManagerPCA.Types.AccessDescription
import Amazonka.CertificateManagerPCA.Types.AccessMethod
import Amazonka.CertificateManagerPCA.Types.AccessMethodType
import Amazonka.CertificateManagerPCA.Types.ActionType
import Amazonka.CertificateManagerPCA.Types.ApiPassthrough
import Amazonka.CertificateManagerPCA.Types.AuditReportResponseFormat
import Amazonka.CertificateManagerPCA.Types.AuditReportStatus
import Amazonka.CertificateManagerPCA.Types.CertificateAuthority
import Amazonka.CertificateManagerPCA.Types.CertificateAuthorityConfiguration
import Amazonka.CertificateManagerPCA.Types.CertificateAuthorityStatus
import Amazonka.CertificateManagerPCA.Types.CertificateAuthorityType
import Amazonka.CertificateManagerPCA.Types.CertificateAuthorityUsageMode
import Amazonka.CertificateManagerPCA.Types.CrlConfiguration
import Amazonka.CertificateManagerPCA.Types.CsrExtensions
import Amazonka.CertificateManagerPCA.Types.CustomAttribute
import Amazonka.CertificateManagerPCA.Types.CustomExtension
import Amazonka.CertificateManagerPCA.Types.EdiPartyName
import Amazonka.CertificateManagerPCA.Types.ExtendedKeyUsage
import Amazonka.CertificateManagerPCA.Types.ExtendedKeyUsageType
import Amazonka.CertificateManagerPCA.Types.Extensions
import Amazonka.CertificateManagerPCA.Types.FailureReason
import Amazonka.CertificateManagerPCA.Types.GeneralName
import Amazonka.CertificateManagerPCA.Types.KeyAlgorithm
import Amazonka.CertificateManagerPCA.Types.KeyStorageSecurityStandard
import Amazonka.CertificateManagerPCA.Types.KeyUsage
import Amazonka.CertificateManagerPCA.Types.OcspConfiguration
import Amazonka.CertificateManagerPCA.Types.OtherName
import Amazonka.CertificateManagerPCA.Types.Permission
import Amazonka.CertificateManagerPCA.Types.PolicyInformation
import Amazonka.CertificateManagerPCA.Types.PolicyQualifierId
import Amazonka.CertificateManagerPCA.Types.PolicyQualifierInfo
import Amazonka.CertificateManagerPCA.Types.Qualifier
import Amazonka.CertificateManagerPCA.Types.ResourceOwner
import Amazonka.CertificateManagerPCA.Types.RevocationConfiguration
import Amazonka.CertificateManagerPCA.Types.RevocationReason
import Amazonka.CertificateManagerPCA.Types.S3ObjectAcl
import Amazonka.CertificateManagerPCA.Types.SigningAlgorithm
import Amazonka.CertificateManagerPCA.Types.Tag
import Amazonka.CertificateManagerPCA.Types.Validity
import Amazonka.CertificateManagerPCA.Types.ValidityPeriodType
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Sign.V4 as Sign

-- | API version @2017-08-22@ of the Amazon Certificate Manager Private Certificate Authority SDK configuration.
defaultService :: Core.Service
defaultService =
  Core.Service
    { Core.abbrev = "CertificateManagerPCA",
      Core.signer = Sign.v4,
      Core.endpointPrefix = "acm-pca",
      Core.signingName = "acm-pca",
      Core.version = "2017-08-22",
      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
      Core.endpoint = Core.defaultEndpoint defaultService,
      Core.timeout = Prelude.Just 70,
      Core.check = Core.statusSuccess,
      Core.error =
        Core.parseJSONError "CertificateManagerPCA",
      Core.retry = retry
    }
  where
    retry =
      Core.Exponential
        { Core.base = 5.0e-2,
          Core.growth = 2,
          Core.attempts = 5,
          Core.check = check
        }
    check e
      | Lens.has (Core.hasStatus 502) e =
          Prelude.Just "bad_gateway"
      | Lens.has (Core.hasStatus 504) e =
          Prelude.Just "gateway_timeout"
      | Lens.has (Core.hasStatus 500) e =
          Prelude.Just "general_server_error"
      | Lens.has (Core.hasStatus 509) e =
          Prelude.Just "limit_exceeded"
      | Lens.has
          ( Core.hasCode "RequestThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "request_throttled_exception"
      | Lens.has (Core.hasStatus 503) e =
          Prelude.Just "service_unavailable"
      | Lens.has
          ( Core.hasCode "ThrottledException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttled_exception"
      | Lens.has
          ( Core.hasCode "Throttling"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling"
      | Lens.has
          ( Core.hasCode "ThrottlingException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throttling_exception"
      | Lens.has
          ( Core.hasCode
              "ProvisionedThroughputExceededException"
              Prelude.. Core.hasStatus 400
          )
          e =
          Prelude.Just "throughput_exceeded"
      | Lens.has (Core.hasStatus 429) e =
          Prelude.Just "too_many_requests"
      | Prelude.otherwise = Prelude.Nothing

-- | The certificate authority certificate you are importing does not comply
-- with conditions specified in the certificate that signed it.
_CertificateMismatchException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_CertificateMismatchException =
  Core._MatchServiceError
    defaultService
    "CertificateMismatchException"

-- | A previous update to your private CA is still ongoing.
_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ConcurrentModificationException =
  Core._MatchServiceError
    defaultService
    "ConcurrentModificationException"

-- | One or more of the specified arguments was not valid.
_InvalidArgsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidArgsException =
  Core._MatchServiceError
    defaultService
    "InvalidArgsException"

-- | The requested Amazon Resource Name (ARN) does not refer to an existing
-- resource.
_InvalidArnException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidArnException =
  Core._MatchServiceError
    defaultService
    "InvalidArnException"

-- | The token specified in the @NextToken@ argument is not valid. Use the
-- token returned from your previous call to
-- <https://docs.aws.amazon.com/privateca/latest/APIReference/API_ListCertificateAuthorities.html ListCertificateAuthorities>.
_InvalidNextTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidNextTokenException =
  Core._MatchServiceError
    defaultService
    "InvalidNextTokenException"

-- | The resource policy is invalid or is missing a required statement. For
-- general information about IAM policy and statement structure, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json Overview of JSON Policies>.
_InvalidPolicyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidPolicyException =
  Core._MatchServiceError
    defaultService
    "InvalidPolicyException"

-- | The request action cannot be performed or is prohibited.
_InvalidRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidRequestException =
  Core._MatchServiceError
    defaultService
    "InvalidRequestException"

-- | The state of the private CA does not allow this action to occur.
_InvalidStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidStateException =
  Core._MatchServiceError
    defaultService
    "InvalidStateException"

-- | The tag associated with the CA is not valid. The invalid argument is
-- contained in the message field.
_InvalidTagException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_InvalidTagException =
  Core._MatchServiceError
    defaultService
    "InvalidTagException"

-- | An Amazon Web Services Private CA quota has been exceeded. See the
-- exception message returned to determine the quota that was exceeded.
_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_LimitExceededException =
  Core._MatchServiceError
    defaultService
    "LimitExceededException"

-- | The current action was prevented because it would lock the caller out
-- from performing subsequent actions. Verify that the specified parameters
-- would not result in the caller being denied access to the resource.
_LockoutPreventedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_LockoutPreventedException =
  Core._MatchServiceError
    defaultService
    "LockoutPreventedException"

-- | The certificate signing request is invalid.
_MalformedCSRException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_MalformedCSRException =
  Core._MatchServiceError
    defaultService
    "MalformedCSRException"

-- | One or more fields in the certificate are invalid.
_MalformedCertificateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_MalformedCertificateException =
  Core._MatchServiceError
    defaultService
    "MalformedCertificateException"

-- | The designated permission has already been given to the user.
_PermissionAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_PermissionAlreadyExistsException =
  Core._MatchServiceError
    defaultService
    "PermissionAlreadyExistsException"

-- | Your request has already been completed.
_RequestAlreadyProcessedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_RequestAlreadyProcessedException =
  Core._MatchServiceError
    defaultService
    "RequestAlreadyProcessedException"

-- | The request has failed for an unspecified reason.
_RequestFailedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_RequestFailedException =
  Core._MatchServiceError
    defaultService
    "RequestFailedException"

-- | Your request is already in progress.
_RequestInProgressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_RequestInProgressException =
  Core._MatchServiceError
    defaultService
    "RequestInProgressException"

-- | A resource such as a private CA, S3 bucket, certificate, audit report,
-- or policy cannot be found.
_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_ResourceNotFoundException =
  Core._MatchServiceError
    defaultService
    "ResourceNotFoundException"

-- | You can associate up to 50 tags with a private CA. Exception information
-- is contained in the exception message field.
_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
_TooManyTagsException =
  Core._MatchServiceError
    defaultService
    "TooManyTagsException"