# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'CertificateAuthorityCertificateAuthorityConfigArgs',
    'CertificateAuthorityCertificateAuthorityConfigSubjectArgs',
    'CertificateAuthorityCertificateAuthorityConfigValidityArgs',
    'CertificateAuthorityCertificateAuthorityRuleArgs',
    'CertificateAuthorityCertificateRevocationListDetailsArgs',
    'CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs',
    'CertificateAuthorityCurrentVersionArgs',
    'CertificateAuthorityCurrentVersionRevocationStatusArgs',
    'CertificateAuthorityCurrentVersionValidityArgs',
    'CertificateAuthoritySubjectArgs',
    'CertificateCertificateConfigArgs',
    'CertificateCertificateConfigSubjectArgs',
    'CertificateCertificateConfigSubjectAlternativeNameArgs',
    'CertificateCertificateConfigValidityArgs',
    'CertificateCertificateRevocationListDetailArgs',
    'CertificateCertificateRevocationListDetailObjectStorageConfigArgs',
    'CertificateCertificateRuleArgs',
    'CertificateCurrentVersionArgs',
    'CertificateCurrentVersionRevocationStatusArgs',
    'CertificateCurrentVersionSubjectAlternativeNameArgs',
    'CertificateCurrentVersionValidityArgs',
    'CertificateSubjectArgs',
    'GetAssociationsFilterArgs',
    'GetCaBundlesFilterArgs',
    'GetCertificateAuthoritiesFilterArgs',
    'GetCertificateAuthorityVersionsFilterArgs',
    'GetCertificateVersionsFilterArgs',
    'GetCertificatesFilterArgs',
]

@pulumi.input_type
class CertificateAuthorityCertificateAuthorityConfigArgs:
    def __init__(__self__, *,
                 config_type: pulumi.Input[str],
                 subject: pulumi.Input['CertificateAuthorityCertificateAuthorityConfigSubjectArgs'],
                 issuer_certificate_authority_id: Optional[pulumi.Input[str]] = None,
                 signing_algorithm: Optional[pulumi.Input[str]] = None,
                 validity: Optional[pulumi.Input['CertificateAuthorityCertificateAuthorityConfigValidityArgs']] = None,
                 version_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] config_type: (Updatable) The origin of the CA.
        :param pulumi.Input['CertificateAuthorityCertificateAuthorityConfigSubjectArgs'] subject: The subject of the certificate, which is a distinguished name that identifies the entity that owns the public key in the certificate.
        :param pulumi.Input[str] issuer_certificate_authority_id: The OCID of the private CA.
        :param pulumi.Input[str] signing_algorithm: The algorithm used to sign public key certificates that the CA issues.
        :param pulumi.Input['CertificateAuthorityCertificateAuthorityConfigValidityArgs'] validity: (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        :param pulumi.Input[str] version_name: (Updatable) The name of the CA version. When the value is not null, a name is unique across versions of a given CA.
        """
        pulumi.set(__self__, "config_type", config_type)
        pulumi.set(__self__, "subject", subject)
        if issuer_certificate_authority_id is not None:
            pulumi.set(__self__, "issuer_certificate_authority_id", issuer_certificate_authority_id)
        if signing_algorithm is not None:
            pulumi.set(__self__, "signing_algorithm", signing_algorithm)
        if validity is not None:
            pulumi.set(__self__, "validity", validity)
        if version_name is not None:
            pulumi.set(__self__, "version_name", version_name)

    @property
    @pulumi.getter(name="configType")
    def config_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The origin of the CA.
        """
        return pulumi.get(self, "config_type")

    @config_type.setter
    def config_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "config_type", value)

    @property
    @pulumi.getter
    def subject(self) -> pulumi.Input['CertificateAuthorityCertificateAuthorityConfigSubjectArgs']:
        """
        The subject of the certificate, which is a distinguished name that identifies the entity that owns the public key in the certificate.
        """
        return pulumi.get(self, "subject")

    @subject.setter
    def subject(self, value: pulumi.Input['CertificateAuthorityCertificateAuthorityConfigSubjectArgs']):
        pulumi.set(self, "subject", value)

    @property
    @pulumi.getter(name="issuerCertificateAuthorityId")
    def issuer_certificate_authority_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the private CA.
        """
        return pulumi.get(self, "issuer_certificate_authority_id")

    @issuer_certificate_authority_id.setter
    def issuer_certificate_authority_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "issuer_certificate_authority_id", value)

    @property
    @pulumi.getter(name="signingAlgorithm")
    def signing_algorithm(self) -> Optional[pulumi.Input[str]]:
        """
        The algorithm used to sign public key certificates that the CA issues.
        """
        return pulumi.get(self, "signing_algorithm")

    @signing_algorithm.setter
    def signing_algorithm(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "signing_algorithm", value)

    @property
    @pulumi.getter
    def validity(self) -> Optional[pulumi.Input['CertificateAuthorityCertificateAuthorityConfigValidityArgs']]:
        """
        (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        """
        return pulumi.get(self, "validity")

    @validity.setter
    def validity(self, value: Optional[pulumi.Input['CertificateAuthorityCertificateAuthorityConfigValidityArgs']]):
        pulumi.set(self, "validity", value)

    @property
    @pulumi.getter(name="versionName")
    def version_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The name of the CA version. When the value is not null, a name is unique across versions of a given CA.
        """
        return pulumi.get(self, "version_name")

    @version_name.setter
    def version_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_name", value)


@pulumi.input_type
class CertificateAuthorityCertificateAuthorityConfigSubjectArgs:
    def __init__(__self__, *,
                 common_name: pulumi.Input[str],
                 country: Optional[pulumi.Input[str]] = None,
                 distinguished_name_qualifier: Optional[pulumi.Input[str]] = None,
                 domain_component: Optional[pulumi.Input[str]] = None,
                 generation_qualifier: Optional[pulumi.Input[str]] = None,
                 given_name: Optional[pulumi.Input[str]] = None,
                 initials: Optional[pulumi.Input[str]] = None,
                 locality_name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 organizational_unit: Optional[pulumi.Input[str]] = None,
                 pseudonym: Optional[pulumi.Input[str]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 state_or_province_name: Optional[pulumi.Input[str]] = None,
                 street: Optional[pulumi.Input[str]] = None,
                 surname: Optional[pulumi.Input[str]] = None,
                 title: Optional[pulumi.Input[str]] = None,
                 user_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] common_name: Common name or fully-qualified domain name (RDN CN).
        :param pulumi.Input[str] country: Country name (RDN C).
        :param pulumi.Input[str] distinguished_name_qualifier: Distinguished name qualifier(RDN DNQ).
        :param pulumi.Input[str] domain_component: Domain component (RDN DC).
        :param pulumi.Input[str] generation_qualifier: Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        :param pulumi.Input[str] given_name: Personal given name (RDN G or GN).
        :param pulumi.Input[str] initials: Personal initials.
        :param pulumi.Input[str] locality_name: Locality (RDN L).
        :param pulumi.Input[str] organization: Organization (RDN O).
        :param pulumi.Input[str] organizational_unit: Organizational unit (RDN OU).
        :param pulumi.Input[str] pseudonym: Subject pseudonym.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[str] state_or_province_name: State or province name (RDN ST or S).
        :param pulumi.Input[str] street: Street address (RDN STREET).
        :param pulumi.Input[str] surname: Personal surname (RDN SN).
        :param pulumi.Input[str] title: Title (RDN T or TITLE).
        :param pulumi.Input[str] user_id: User ID (RDN UID).
        """
        pulumi.set(__self__, "common_name", common_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if distinguished_name_qualifier is not None:
            pulumi.set(__self__, "distinguished_name_qualifier", distinguished_name_qualifier)
        if domain_component is not None:
            pulumi.set(__self__, "domain_component", domain_component)
        if generation_qualifier is not None:
            pulumi.set(__self__, "generation_qualifier", generation_qualifier)
        if given_name is not None:
            pulumi.set(__self__, "given_name", given_name)
        if initials is not None:
            pulumi.set(__self__, "initials", initials)
        if locality_name is not None:
            pulumi.set(__self__, "locality_name", locality_name)
        if organization is not None:
            pulumi.set(__self__, "organization", organization)
        if organizational_unit is not None:
            pulumi.set(__self__, "organizational_unit", organizational_unit)
        if pseudonym is not None:
            pulumi.set(__self__, "pseudonym", pseudonym)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if state_or_province_name is not None:
            pulumi.set(__self__, "state_or_province_name", state_or_province_name)
        if street is not None:
            pulumi.set(__self__, "street", street)
        if surname is not None:
            pulumi.set(__self__, "surname", surname)
        if title is not None:
            pulumi.set(__self__, "title", title)
        if user_id is not None:
            pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter(name="commonName")
    def common_name(self) -> pulumi.Input[str]:
        """
        Common name or fully-qualified domain name (RDN CN).
        """
        return pulumi.get(self, "common_name")

    @common_name.setter
    def common_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "common_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        Country name (RDN C).
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="distinguishedNameQualifier")
    def distinguished_name_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Distinguished name qualifier(RDN DNQ).
        """
        return pulumi.get(self, "distinguished_name_qualifier")

    @distinguished_name_qualifier.setter
    def distinguished_name_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "distinguished_name_qualifier", value)

    @property
    @pulumi.getter(name="domainComponent")
    def domain_component(self) -> Optional[pulumi.Input[str]]:
        """
        Domain component (RDN DC).
        """
        return pulumi.get(self, "domain_component")

    @domain_component.setter
    def domain_component(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "domain_component", value)

    @property
    @pulumi.getter(name="generationQualifier")
    def generation_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        """
        return pulumi.get(self, "generation_qualifier")

    @generation_qualifier.setter
    def generation_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "generation_qualifier", value)

    @property
    @pulumi.getter(name="givenName")
    def given_name(self) -> Optional[pulumi.Input[str]]:
        """
        Personal given name (RDN G or GN).
        """
        return pulumi.get(self, "given_name")

    @given_name.setter
    def given_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "given_name", value)

    @property
    @pulumi.getter
    def initials(self) -> Optional[pulumi.Input[str]]:
        """
        Personal initials.
        """
        return pulumi.get(self, "initials")

    @initials.setter
    def initials(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "initials", value)

    @property
    @pulumi.getter(name="localityName")
    def locality_name(self) -> Optional[pulumi.Input[str]]:
        """
        Locality (RDN L).
        """
        return pulumi.get(self, "locality_name")

    @locality_name.setter
    def locality_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "locality_name", value)

    @property
    @pulumi.getter
    def organization(self) -> Optional[pulumi.Input[str]]:
        """
        Organization (RDN O).
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter(name="organizationalUnit")
    def organizational_unit(self) -> Optional[pulumi.Input[str]]:
        """
        Organizational unit (RDN OU).
        """
        return pulumi.get(self, "organizational_unit")

    @organizational_unit.setter
    def organizational_unit(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organizational_unit", value)

    @property
    @pulumi.getter
    def pseudonym(self) -> Optional[pulumi.Input[str]]:
        """
        Subject pseudonym.
        """
        return pulumi.get(self, "pseudonym")

    @pseudonym.setter
    def pseudonym(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pseudonym", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter(name="stateOrProvinceName")
    def state_or_province_name(self) -> Optional[pulumi.Input[str]]:
        """
        State or province name (RDN ST or S).
        """
        return pulumi.get(self, "state_or_province_name")

    @state_or_province_name.setter
    def state_or_province_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state_or_province_name", value)

    @property
    @pulumi.getter
    def street(self) -> Optional[pulumi.Input[str]]:
        """
        Street address (RDN STREET).
        """
        return pulumi.get(self, "street")

    @street.setter
    def street(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "street", value)

    @property
    @pulumi.getter
    def surname(self) -> Optional[pulumi.Input[str]]:
        """
        Personal surname (RDN SN).
        """
        return pulumi.get(self, "surname")

    @surname.setter
    def surname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "surname", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        """
        Title (RDN T or TITLE).
        """
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> Optional[pulumi.Input[str]]:
        """
        User ID (RDN UID).
        """
        return pulumi.get(self, "user_id")

    @user_id.setter
    def user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_id", value)


@pulumi.input_type
class CertificateAuthorityCertificateAuthorityConfigValidityArgs:
    def __init__(__self__, *,
                 time_of_validity_not_after: pulumi.Input[str],
                 time_of_validity_not_before: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] time_of_validity_not_after: (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_validity_not_before: (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        pulumi.set(__self__, "time_of_validity_not_after", time_of_validity_not_after)
        if time_of_validity_not_before is not None:
            pulumi.set(__self__, "time_of_validity_not_before", time_of_validity_not_before)

    @property
    @pulumi.getter(name="timeOfValidityNotAfter")
    def time_of_validity_not_after(self) -> pulumi.Input[str]:
        """
        (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_after")

    @time_of_validity_not_after.setter
    def time_of_validity_not_after(self, value: pulumi.Input[str]):
        pulumi.set(self, "time_of_validity_not_after", value)

    @property
    @pulumi.getter(name="timeOfValidityNotBefore")
    def time_of_validity_not_before(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_before")

    @time_of_validity_not_before.setter
    def time_of_validity_not_before(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_before", value)


@pulumi.input_type
class CertificateAuthorityCertificateAuthorityRuleArgs:
    def __init__(__self__, *,
                 rule_type: pulumi.Input[str],
                 certificate_authority_max_validity_duration: Optional[pulumi.Input[str]] = None,
                 leaf_certificate_max_validity_duration: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] rule_type: (Updatable) The type of rule, whether a renewal rule regarding when to renew the CA or an issuance expiry rule that governs how long the certificates and CAs issued by the CA are valid. (For internal use only) An internal issuance rule defines the number and type of certificates that the CA can issue.
        :param pulumi.Input[str] certificate_authority_max_validity_duration: (Updatable) A property indicating the maximum validity duration, in days, of subordinate CA's issued by this CA. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        :param pulumi.Input[str] leaf_certificate_max_validity_duration: (Updatable) A property indicating the maximum validity duration, in days, of leaf certificates issued by this CA. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        """
        pulumi.set(__self__, "rule_type", rule_type)
        if certificate_authority_max_validity_duration is not None:
            pulumi.set(__self__, "certificate_authority_max_validity_duration", certificate_authority_max_validity_duration)
        if leaf_certificate_max_validity_duration is not None:
            pulumi.set(__self__, "leaf_certificate_max_validity_duration", leaf_certificate_max_validity_duration)

    @property
    @pulumi.getter(name="ruleType")
    def rule_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The type of rule, whether a renewal rule regarding when to renew the CA or an issuance expiry rule that governs how long the certificates and CAs issued by the CA are valid. (For internal use only) An internal issuance rule defines the number and type of certificates that the CA can issue.
        """
        return pulumi.get(self, "rule_type")

    @rule_type.setter
    def rule_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "rule_type", value)

    @property
    @pulumi.getter(name="certificateAuthorityMaxValidityDuration")
    def certificate_authority_max_validity_duration(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A property indicating the maximum validity duration, in days, of subordinate CA's issued by this CA. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        """
        return pulumi.get(self, "certificate_authority_max_validity_duration")

    @certificate_authority_max_validity_duration.setter
    def certificate_authority_max_validity_duration(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate_authority_max_validity_duration", value)

    @property
    @pulumi.getter(name="leafCertificateMaxValidityDuration")
    def leaf_certificate_max_validity_duration(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A property indicating the maximum validity duration, in days, of leaf certificates issued by this CA. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        """
        return pulumi.get(self, "leaf_certificate_max_validity_duration")

    @leaf_certificate_max_validity_duration.setter
    def leaf_certificate_max_validity_duration(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "leaf_certificate_max_validity_duration", value)


@pulumi.input_type
class CertificateAuthorityCertificateRevocationListDetailsArgs:
    def __init__(__self__, *,
                 object_storage_config: pulumi.Input['CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs'],
                 custom_formatted_urls: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input['CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs'] object_storage_config: (Updatable) The details of the Object Storage bucket configured to store the certificate revocation list (CRL).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] custom_formatted_urls: (Updatable) Optional CRL access points, expressed using a format where the version number of the issuing CA is inserted wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        pulumi.set(__self__, "object_storage_config", object_storage_config)
        if custom_formatted_urls is not None:
            pulumi.set(__self__, "custom_formatted_urls", custom_formatted_urls)

    @property
    @pulumi.getter(name="objectStorageConfig")
    def object_storage_config(self) -> pulumi.Input['CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs']:
        """
        (Updatable) The details of the Object Storage bucket configured to store the certificate revocation list (CRL).
        """
        return pulumi.get(self, "object_storage_config")

    @object_storage_config.setter
    def object_storage_config(self, value: pulumi.Input['CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs']):
        pulumi.set(self, "object_storage_config", value)

    @property
    @pulumi.getter(name="customFormattedUrls")
    def custom_formatted_urls(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (Updatable) Optional CRL access points, expressed using a format where the version number of the issuing CA is inserted wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        return pulumi.get(self, "custom_formatted_urls")

    @custom_formatted_urls.setter
    def custom_formatted_urls(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "custom_formatted_urls", value)


@pulumi.input_type
class CertificateAuthorityCertificateRevocationListDetailsObjectStorageConfigArgs:
    def __init__(__self__, *,
                 object_storage_bucket_name: pulumi.Input[str],
                 object_storage_object_name_format: pulumi.Input[str],
                 object_storage_namespace: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] object_storage_bucket_name: (Updatable) The name of the bucket where the CRL is stored.
        :param pulumi.Input[str] object_storage_object_name_format: (Updatable) The object name in the bucket where the CRL is stored, expressed using a format where the version number of the issuing CA is inserted as part of the Object Storage object name wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        :param pulumi.Input[str] object_storage_namespace: (Updatable) The tenancy of the bucket where the CRL is stored.
        """
        pulumi.set(__self__, "object_storage_bucket_name", object_storage_bucket_name)
        pulumi.set(__self__, "object_storage_object_name_format", object_storage_object_name_format)
        if object_storage_namespace is not None:
            pulumi.set(__self__, "object_storage_namespace", object_storage_namespace)

    @property
    @pulumi.getter(name="objectStorageBucketName")
    def object_storage_bucket_name(self) -> pulumi.Input[str]:
        """
        (Updatable) The name of the bucket where the CRL is stored.
        """
        return pulumi.get(self, "object_storage_bucket_name")

    @object_storage_bucket_name.setter
    def object_storage_bucket_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "object_storage_bucket_name", value)

    @property
    @pulumi.getter(name="objectStorageObjectNameFormat")
    def object_storage_object_name_format(self) -> pulumi.Input[str]:
        """
        (Updatable) The object name in the bucket where the CRL is stored, expressed using a format where the version number of the issuing CA is inserted as part of the Object Storage object name wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        return pulumi.get(self, "object_storage_object_name_format")

    @object_storage_object_name_format.setter
    def object_storage_object_name_format(self, value: pulumi.Input[str]):
        pulumi.set(self, "object_storage_object_name_format", value)

    @property
    @pulumi.getter(name="objectStorageNamespace")
    def object_storage_namespace(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The tenancy of the bucket where the CRL is stored.
        """
        return pulumi.get(self, "object_storage_namespace")

    @object_storage_namespace.setter
    def object_storage_namespace(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "object_storage_namespace", value)


@pulumi.input_type
class CertificateAuthorityCurrentVersionArgs:
    def __init__(__self__, *,
                 certificate_authority_id: Optional[pulumi.Input[str]] = None,
                 issuer_ca_version_number: Optional[pulumi.Input[str]] = None,
                 revocation_statuses: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionRevocationStatusArgs']]]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 stages: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 time_created: Optional[pulumi.Input[str]] = None,
                 time_of_deletion: Optional[pulumi.Input[str]] = None,
                 validities: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionValidityArgs']]]] = None,
                 version_name: Optional[pulumi.Input[str]] = None,
                 version_number: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] certificate_authority_id: The OCID of the CA.
        :param pulumi.Input[str] issuer_ca_version_number: The version number of the issuing CA.
        :param pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionRevocationStatusArgs']]] revocation_statuses: The current revocation status of the entity.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] stages: A list of rotation states for this CA version.
        :param pulumi.Input[str] time_created: A property indicating when the CA was created, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_deletion: An optional property indicating when to delete the CA version, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionValidityArgs']]] validities: (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        :param pulumi.Input[str] version_name: (Updatable) The name of the CA version. When the value is not null, a name is unique across versions of a given CA.
        :param pulumi.Input[str] version_number: The version number of the CA.
        """
        if certificate_authority_id is not None:
            pulumi.set(__self__, "certificate_authority_id", certificate_authority_id)
        if issuer_ca_version_number is not None:
            pulumi.set(__self__, "issuer_ca_version_number", issuer_ca_version_number)
        if revocation_statuses is not None:
            pulumi.set(__self__, "revocation_statuses", revocation_statuses)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if stages is not None:
            pulumi.set(__self__, "stages", stages)
        if time_created is not None:
            pulumi.set(__self__, "time_created", time_created)
        if time_of_deletion is not None:
            pulumi.set(__self__, "time_of_deletion", time_of_deletion)
        if validities is not None:
            pulumi.set(__self__, "validities", validities)
        if version_name is not None:
            pulumi.set(__self__, "version_name", version_name)
        if version_number is not None:
            pulumi.set(__self__, "version_number", version_number)

    @property
    @pulumi.getter(name="certificateAuthorityId")
    def certificate_authority_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the CA.
        """
        return pulumi.get(self, "certificate_authority_id")

    @certificate_authority_id.setter
    def certificate_authority_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate_authority_id", value)

    @property
    @pulumi.getter(name="issuerCaVersionNumber")
    def issuer_ca_version_number(self) -> Optional[pulumi.Input[str]]:
        """
        The version number of the issuing CA.
        """
        return pulumi.get(self, "issuer_ca_version_number")

    @issuer_ca_version_number.setter
    def issuer_ca_version_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "issuer_ca_version_number", value)

    @property
    @pulumi.getter(name="revocationStatuses")
    def revocation_statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionRevocationStatusArgs']]]]:
        """
        The current revocation status of the entity.
        """
        return pulumi.get(self, "revocation_statuses")

    @revocation_statuses.setter
    def revocation_statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionRevocationStatusArgs']]]]):
        pulumi.set(self, "revocation_statuses", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter
    def stages(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of rotation states for this CA version.
        """
        return pulumi.get(self, "stages")

    @stages.setter
    def stages(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "stages", value)

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> Optional[pulumi.Input[str]]:
        """
        A property indicating when the CA was created, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_created")

    @time_created.setter
    def time_created(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_created", value)

    @property
    @pulumi.getter(name="timeOfDeletion")
    def time_of_deletion(self) -> Optional[pulumi.Input[str]]:
        """
        An optional property indicating when to delete the CA version, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_deletion")

    @time_of_deletion.setter
    def time_of_deletion(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_deletion", value)

    @property
    @pulumi.getter
    def validities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionValidityArgs']]]]:
        """
        (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        """
        return pulumi.get(self, "validities")

    @validities.setter
    def validities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateAuthorityCurrentVersionValidityArgs']]]]):
        pulumi.set(self, "validities", value)

    @property
    @pulumi.getter(name="versionName")
    def version_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The name of the CA version. When the value is not null, a name is unique across versions of a given CA.
        """
        return pulumi.get(self, "version_name")

    @version_name.setter
    def version_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_name", value)

    @property
    @pulumi.getter(name="versionNumber")
    def version_number(self) -> Optional[pulumi.Input[str]]:
        """
        The version number of the CA.
        """
        return pulumi.get(self, "version_number")

    @version_number.setter
    def version_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_number", value)


@pulumi.input_type
class CertificateAuthorityCurrentVersionRevocationStatusArgs:
    def __init__(__self__, *,
                 revocation_reason: Optional[pulumi.Input[str]] = None,
                 time_of_revocation: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] revocation_reason: The reason the certificate or certificate authority (CA) was revoked.
        :param pulumi.Input[str] time_of_revocation: The time when the entity was revoked, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        if revocation_reason is not None:
            pulumi.set(__self__, "revocation_reason", revocation_reason)
        if time_of_revocation is not None:
            pulumi.set(__self__, "time_of_revocation", time_of_revocation)

    @property
    @pulumi.getter(name="revocationReason")
    def revocation_reason(self) -> Optional[pulumi.Input[str]]:
        """
        The reason the certificate or certificate authority (CA) was revoked.
        """
        return pulumi.get(self, "revocation_reason")

    @revocation_reason.setter
    def revocation_reason(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "revocation_reason", value)

    @property
    @pulumi.getter(name="timeOfRevocation")
    def time_of_revocation(self) -> Optional[pulumi.Input[str]]:
        """
        The time when the entity was revoked, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_revocation")

    @time_of_revocation.setter
    def time_of_revocation(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_revocation", value)


@pulumi.input_type
class CertificateAuthorityCurrentVersionValidityArgs:
    def __init__(__self__, *,
                 time_of_validity_not_after: Optional[pulumi.Input[str]] = None,
                 time_of_validity_not_before: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] time_of_validity_not_after: (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_validity_not_before: (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        if time_of_validity_not_after is not None:
            pulumi.set(__self__, "time_of_validity_not_after", time_of_validity_not_after)
        if time_of_validity_not_before is not None:
            pulumi.set(__self__, "time_of_validity_not_before", time_of_validity_not_before)

    @property
    @pulumi.getter(name="timeOfValidityNotAfter")
    def time_of_validity_not_after(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_after")

    @time_of_validity_not_after.setter
    def time_of_validity_not_after(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_after", value)

    @property
    @pulumi.getter(name="timeOfValidityNotBefore")
    def time_of_validity_not_before(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_before")

    @time_of_validity_not_before.setter
    def time_of_validity_not_before(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_before", value)


@pulumi.input_type
class CertificateAuthoritySubjectArgs:
    def __init__(__self__, *,
                 common_name: Optional[pulumi.Input[str]] = None,
                 country: Optional[pulumi.Input[str]] = None,
                 distinguished_name_qualifier: Optional[pulumi.Input[str]] = None,
                 domain_component: Optional[pulumi.Input[str]] = None,
                 generation_qualifier: Optional[pulumi.Input[str]] = None,
                 given_name: Optional[pulumi.Input[str]] = None,
                 initials: Optional[pulumi.Input[str]] = None,
                 locality_name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 organizational_unit: Optional[pulumi.Input[str]] = None,
                 pseudonym: Optional[pulumi.Input[str]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 state_or_province_name: Optional[pulumi.Input[str]] = None,
                 street: Optional[pulumi.Input[str]] = None,
                 surname: Optional[pulumi.Input[str]] = None,
                 title: Optional[pulumi.Input[str]] = None,
                 user_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] common_name: Common name or fully-qualified domain name (RDN CN).
        :param pulumi.Input[str] country: Country name (RDN C).
        :param pulumi.Input[str] distinguished_name_qualifier: Distinguished name qualifier(RDN DNQ).
        :param pulumi.Input[str] domain_component: Domain component (RDN DC).
        :param pulumi.Input[str] generation_qualifier: Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        :param pulumi.Input[str] given_name: Personal given name (RDN G or GN).
        :param pulumi.Input[str] initials: Personal initials.
        :param pulumi.Input[str] locality_name: Locality (RDN L).
        :param pulumi.Input[str] organization: Organization (RDN O).
        :param pulumi.Input[str] organizational_unit: Organizational unit (RDN OU).
        :param pulumi.Input[str] pseudonym: Subject pseudonym.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[str] state_or_province_name: State or province name (RDN ST or S).
        :param pulumi.Input[str] street: Street address (RDN STREET).
        :param pulumi.Input[str] surname: Personal surname (RDN SN).
        :param pulumi.Input[str] title: Title (RDN T or TITLE).
        :param pulumi.Input[str] user_id: User ID (RDN UID).
        """
        if common_name is not None:
            pulumi.set(__self__, "common_name", common_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if distinguished_name_qualifier is not None:
            pulumi.set(__self__, "distinguished_name_qualifier", distinguished_name_qualifier)
        if domain_component is not None:
            pulumi.set(__self__, "domain_component", domain_component)
        if generation_qualifier is not None:
            pulumi.set(__self__, "generation_qualifier", generation_qualifier)
        if given_name is not None:
            pulumi.set(__self__, "given_name", given_name)
        if initials is not None:
            pulumi.set(__self__, "initials", initials)
        if locality_name is not None:
            pulumi.set(__self__, "locality_name", locality_name)
        if organization is not None:
            pulumi.set(__self__, "organization", organization)
        if organizational_unit is not None:
            pulumi.set(__self__, "organizational_unit", organizational_unit)
        if pseudonym is not None:
            pulumi.set(__self__, "pseudonym", pseudonym)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if state_or_province_name is not None:
            pulumi.set(__self__, "state_or_province_name", state_or_province_name)
        if street is not None:
            pulumi.set(__self__, "street", street)
        if surname is not None:
            pulumi.set(__self__, "surname", surname)
        if title is not None:
            pulumi.set(__self__, "title", title)
        if user_id is not None:
            pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter(name="commonName")
    def common_name(self) -> Optional[pulumi.Input[str]]:
        """
        Common name or fully-qualified domain name (RDN CN).
        """
        return pulumi.get(self, "common_name")

    @common_name.setter
    def common_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "common_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        Country name (RDN C).
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="distinguishedNameQualifier")
    def distinguished_name_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Distinguished name qualifier(RDN DNQ).
        """
        return pulumi.get(self, "distinguished_name_qualifier")

    @distinguished_name_qualifier.setter
    def distinguished_name_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "distinguished_name_qualifier", value)

    @property
    @pulumi.getter(name="domainComponent")
    def domain_component(self) -> Optional[pulumi.Input[str]]:
        """
        Domain component (RDN DC).
        """
        return pulumi.get(self, "domain_component")

    @domain_component.setter
    def domain_component(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "domain_component", value)

    @property
    @pulumi.getter(name="generationQualifier")
    def generation_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        """
        return pulumi.get(self, "generation_qualifier")

    @generation_qualifier.setter
    def generation_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "generation_qualifier", value)

    @property
    @pulumi.getter(name="givenName")
    def given_name(self) -> Optional[pulumi.Input[str]]:
        """
        Personal given name (RDN G or GN).
        """
        return pulumi.get(self, "given_name")

    @given_name.setter
    def given_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "given_name", value)

    @property
    @pulumi.getter
    def initials(self) -> Optional[pulumi.Input[str]]:
        """
        Personal initials.
        """
        return pulumi.get(self, "initials")

    @initials.setter
    def initials(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "initials", value)

    @property
    @pulumi.getter(name="localityName")
    def locality_name(self) -> Optional[pulumi.Input[str]]:
        """
        Locality (RDN L).
        """
        return pulumi.get(self, "locality_name")

    @locality_name.setter
    def locality_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "locality_name", value)

    @property
    @pulumi.getter
    def organization(self) -> Optional[pulumi.Input[str]]:
        """
        Organization (RDN O).
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter(name="organizationalUnit")
    def organizational_unit(self) -> Optional[pulumi.Input[str]]:
        """
        Organizational unit (RDN OU).
        """
        return pulumi.get(self, "organizational_unit")

    @organizational_unit.setter
    def organizational_unit(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organizational_unit", value)

    @property
    @pulumi.getter
    def pseudonym(self) -> Optional[pulumi.Input[str]]:
        """
        Subject pseudonym.
        """
        return pulumi.get(self, "pseudonym")

    @pseudonym.setter
    def pseudonym(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pseudonym", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter(name="stateOrProvinceName")
    def state_or_province_name(self) -> Optional[pulumi.Input[str]]:
        """
        State or province name (RDN ST or S).
        """
        return pulumi.get(self, "state_or_province_name")

    @state_or_province_name.setter
    def state_or_province_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state_or_province_name", value)

    @property
    @pulumi.getter
    def street(self) -> Optional[pulumi.Input[str]]:
        """
        Street address (RDN STREET).
        """
        return pulumi.get(self, "street")

    @street.setter
    def street(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "street", value)

    @property
    @pulumi.getter
    def surname(self) -> Optional[pulumi.Input[str]]:
        """
        Personal surname (RDN SN).
        """
        return pulumi.get(self, "surname")

    @surname.setter
    def surname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "surname", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        """
        Title (RDN T or TITLE).
        """
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> Optional[pulumi.Input[str]]:
        """
        User ID (RDN UID).
        """
        return pulumi.get(self, "user_id")

    @user_id.setter
    def user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_id", value)


@pulumi.input_type
class CertificateCertificateConfigArgs:
    def __init__(__self__, *,
                 config_type: pulumi.Input[str],
                 certificate_profile_type: Optional[pulumi.Input[str]] = None,
                 csr_pem: Optional[pulumi.Input[str]] = None,
                 issuer_certificate_authority_id: Optional[pulumi.Input[str]] = None,
                 key_algorithm: Optional[pulumi.Input[str]] = None,
                 signature_algorithm: Optional[pulumi.Input[str]] = None,
                 subject: Optional[pulumi.Input['CertificateCertificateConfigSubjectArgs']] = None,
                 subject_alternative_names: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateConfigSubjectAlternativeNameArgs']]]] = None,
                 validity: Optional[pulumi.Input['CertificateCertificateConfigValidityArgs']] = None,
                 version_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] config_type: (Updatable) The origin of the certificate.
        :param pulumi.Input[str] certificate_profile_type: The name of the profile used to create the certificate, which depends on the type of certificate you need.
        :param pulumi.Input[str] csr_pem: (Updatable) The certificate signing request (in PEM format).
        :param pulumi.Input[str] issuer_certificate_authority_id: The OCID of the private CA.
        :param pulumi.Input[str] key_algorithm: The algorithm to use to create key pairs.
        :param pulumi.Input[str] signature_algorithm: The algorithm to use to sign the public key certificate.
        :param pulumi.Input['CertificateCertificateConfigSubjectArgs'] subject: The subject of the certificate, which is a distinguished name that identifies the entity that owns the public key in the certificate.
        :param pulumi.Input[Sequence[pulumi.Input['CertificateCertificateConfigSubjectAlternativeNameArgs']]] subject_alternative_names: A list of subject alternative names.
        :param pulumi.Input['CertificateCertificateConfigValidityArgs'] validity: (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        :param pulumi.Input[str] version_name: (Updatable) A name for the certificate. When the value is not null, a name is unique across versions of a given certificate.
        """
        pulumi.set(__self__, "config_type", config_type)
        if certificate_profile_type is not None:
            pulumi.set(__self__, "certificate_profile_type", certificate_profile_type)
        if csr_pem is not None:
            pulumi.set(__self__, "csr_pem", csr_pem)
        if issuer_certificate_authority_id is not None:
            pulumi.set(__self__, "issuer_certificate_authority_id", issuer_certificate_authority_id)
        if key_algorithm is not None:
            pulumi.set(__self__, "key_algorithm", key_algorithm)
        if signature_algorithm is not None:
            pulumi.set(__self__, "signature_algorithm", signature_algorithm)
        if subject is not None:
            pulumi.set(__self__, "subject", subject)
        if subject_alternative_names is not None:
            pulumi.set(__self__, "subject_alternative_names", subject_alternative_names)
        if validity is not None:
            pulumi.set(__self__, "validity", validity)
        if version_name is not None:
            pulumi.set(__self__, "version_name", version_name)

    @property
    @pulumi.getter(name="configType")
    def config_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The origin of the certificate.
        """
        return pulumi.get(self, "config_type")

    @config_type.setter
    def config_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "config_type", value)

    @property
    @pulumi.getter(name="certificateProfileType")
    def certificate_profile_type(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the profile used to create the certificate, which depends on the type of certificate you need.
        """
        return pulumi.get(self, "certificate_profile_type")

    @certificate_profile_type.setter
    def certificate_profile_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate_profile_type", value)

    @property
    @pulumi.getter(name="csrPem")
    def csr_pem(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The certificate signing request (in PEM format).
        """
        return pulumi.get(self, "csr_pem")

    @csr_pem.setter
    def csr_pem(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "csr_pem", value)

    @property
    @pulumi.getter(name="issuerCertificateAuthorityId")
    def issuer_certificate_authority_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the private CA.
        """
        return pulumi.get(self, "issuer_certificate_authority_id")

    @issuer_certificate_authority_id.setter
    def issuer_certificate_authority_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "issuer_certificate_authority_id", value)

    @property
    @pulumi.getter(name="keyAlgorithm")
    def key_algorithm(self) -> Optional[pulumi.Input[str]]:
        """
        The algorithm to use to create key pairs.
        """
        return pulumi.get(self, "key_algorithm")

    @key_algorithm.setter
    def key_algorithm(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "key_algorithm", value)

    @property
    @pulumi.getter(name="signatureAlgorithm")
    def signature_algorithm(self) -> Optional[pulumi.Input[str]]:
        """
        The algorithm to use to sign the public key certificate.
        """
        return pulumi.get(self, "signature_algorithm")

    @signature_algorithm.setter
    def signature_algorithm(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "signature_algorithm", value)

    @property
    @pulumi.getter
    def subject(self) -> Optional[pulumi.Input['CertificateCertificateConfigSubjectArgs']]:
        """
        The subject of the certificate, which is a distinguished name that identifies the entity that owns the public key in the certificate.
        """
        return pulumi.get(self, "subject")

    @subject.setter
    def subject(self, value: Optional[pulumi.Input['CertificateCertificateConfigSubjectArgs']]):
        pulumi.set(self, "subject", value)

    @property
    @pulumi.getter(name="subjectAlternativeNames")
    def subject_alternative_names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateConfigSubjectAlternativeNameArgs']]]]:
        """
        A list of subject alternative names.
        """
        return pulumi.get(self, "subject_alternative_names")

    @subject_alternative_names.setter
    def subject_alternative_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateConfigSubjectAlternativeNameArgs']]]]):
        pulumi.set(self, "subject_alternative_names", value)

    @property
    @pulumi.getter
    def validity(self) -> Optional[pulumi.Input['CertificateCertificateConfigValidityArgs']]:
        """
        (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        """
        return pulumi.get(self, "validity")

    @validity.setter
    def validity(self, value: Optional[pulumi.Input['CertificateCertificateConfigValidityArgs']]):
        pulumi.set(self, "validity", value)

    @property
    @pulumi.getter(name="versionName")
    def version_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A name for the certificate. When the value is not null, a name is unique across versions of a given certificate.
        """
        return pulumi.get(self, "version_name")

    @version_name.setter
    def version_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_name", value)


@pulumi.input_type
class CertificateCertificateConfigSubjectArgs:
    def __init__(__self__, *,
                 common_name: pulumi.Input[str],
                 country: Optional[pulumi.Input[str]] = None,
                 distinguished_name_qualifier: Optional[pulumi.Input[str]] = None,
                 domain_component: Optional[pulumi.Input[str]] = None,
                 generation_qualifier: Optional[pulumi.Input[str]] = None,
                 given_name: Optional[pulumi.Input[str]] = None,
                 initials: Optional[pulumi.Input[str]] = None,
                 locality_name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 organizational_unit: Optional[pulumi.Input[str]] = None,
                 pseudonym: Optional[pulumi.Input[str]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 state_or_province_name: Optional[pulumi.Input[str]] = None,
                 street: Optional[pulumi.Input[str]] = None,
                 surname: Optional[pulumi.Input[str]] = None,
                 title: Optional[pulumi.Input[str]] = None,
                 user_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] common_name: Common name or fully-qualified domain name (RDN CN).
        :param pulumi.Input[str] country: Country name (RDN C).
        :param pulumi.Input[str] distinguished_name_qualifier: Distinguished name qualifier(RDN DNQ).
        :param pulumi.Input[str] domain_component: Domain component (RDN DC).
        :param pulumi.Input[str] generation_qualifier: Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        :param pulumi.Input[str] given_name: Personal given name (RDN G or GN).
        :param pulumi.Input[str] initials: Personal initials.
        :param pulumi.Input[str] locality_name: Locality (RDN L).
        :param pulumi.Input[str] organization: Organization (RDN O).
        :param pulumi.Input[str] organizational_unit: Organizational unit (RDN OU).
        :param pulumi.Input[str] pseudonym: Subject pseudonym.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[str] state_or_province_name: State or province name (RDN ST or S).
        :param pulumi.Input[str] street: Street address (RDN STREET).
        :param pulumi.Input[str] surname: Personal surname (RDN SN).
        :param pulumi.Input[str] title: Title (RDN T or TITLE).
        :param pulumi.Input[str] user_id: User ID (RDN UID).
        """
        pulumi.set(__self__, "common_name", common_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if distinguished_name_qualifier is not None:
            pulumi.set(__self__, "distinguished_name_qualifier", distinguished_name_qualifier)
        if domain_component is not None:
            pulumi.set(__self__, "domain_component", domain_component)
        if generation_qualifier is not None:
            pulumi.set(__self__, "generation_qualifier", generation_qualifier)
        if given_name is not None:
            pulumi.set(__self__, "given_name", given_name)
        if initials is not None:
            pulumi.set(__self__, "initials", initials)
        if locality_name is not None:
            pulumi.set(__self__, "locality_name", locality_name)
        if organization is not None:
            pulumi.set(__self__, "organization", organization)
        if organizational_unit is not None:
            pulumi.set(__self__, "organizational_unit", organizational_unit)
        if pseudonym is not None:
            pulumi.set(__self__, "pseudonym", pseudonym)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if state_or_province_name is not None:
            pulumi.set(__self__, "state_or_province_name", state_or_province_name)
        if street is not None:
            pulumi.set(__self__, "street", street)
        if surname is not None:
            pulumi.set(__self__, "surname", surname)
        if title is not None:
            pulumi.set(__self__, "title", title)
        if user_id is not None:
            pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter(name="commonName")
    def common_name(self) -> pulumi.Input[str]:
        """
        Common name or fully-qualified domain name (RDN CN).
        """
        return pulumi.get(self, "common_name")

    @common_name.setter
    def common_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "common_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        Country name (RDN C).
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="distinguishedNameQualifier")
    def distinguished_name_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Distinguished name qualifier(RDN DNQ).
        """
        return pulumi.get(self, "distinguished_name_qualifier")

    @distinguished_name_qualifier.setter
    def distinguished_name_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "distinguished_name_qualifier", value)

    @property
    @pulumi.getter(name="domainComponent")
    def domain_component(self) -> Optional[pulumi.Input[str]]:
        """
        Domain component (RDN DC).
        """
        return pulumi.get(self, "domain_component")

    @domain_component.setter
    def domain_component(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "domain_component", value)

    @property
    @pulumi.getter(name="generationQualifier")
    def generation_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        """
        return pulumi.get(self, "generation_qualifier")

    @generation_qualifier.setter
    def generation_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "generation_qualifier", value)

    @property
    @pulumi.getter(name="givenName")
    def given_name(self) -> Optional[pulumi.Input[str]]:
        """
        Personal given name (RDN G or GN).
        """
        return pulumi.get(self, "given_name")

    @given_name.setter
    def given_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "given_name", value)

    @property
    @pulumi.getter
    def initials(self) -> Optional[pulumi.Input[str]]:
        """
        Personal initials.
        """
        return pulumi.get(self, "initials")

    @initials.setter
    def initials(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "initials", value)

    @property
    @pulumi.getter(name="localityName")
    def locality_name(self) -> Optional[pulumi.Input[str]]:
        """
        Locality (RDN L).
        """
        return pulumi.get(self, "locality_name")

    @locality_name.setter
    def locality_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "locality_name", value)

    @property
    @pulumi.getter
    def organization(self) -> Optional[pulumi.Input[str]]:
        """
        Organization (RDN O).
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter(name="organizationalUnit")
    def organizational_unit(self) -> Optional[pulumi.Input[str]]:
        """
        Organizational unit (RDN OU).
        """
        return pulumi.get(self, "organizational_unit")

    @organizational_unit.setter
    def organizational_unit(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organizational_unit", value)

    @property
    @pulumi.getter
    def pseudonym(self) -> Optional[pulumi.Input[str]]:
        """
        Subject pseudonym.
        """
        return pulumi.get(self, "pseudonym")

    @pseudonym.setter
    def pseudonym(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pseudonym", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter(name="stateOrProvinceName")
    def state_or_province_name(self) -> Optional[pulumi.Input[str]]:
        """
        State or province name (RDN ST or S).
        """
        return pulumi.get(self, "state_or_province_name")

    @state_or_province_name.setter
    def state_or_province_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state_or_province_name", value)

    @property
    @pulumi.getter
    def street(self) -> Optional[pulumi.Input[str]]:
        """
        Street address (RDN STREET).
        """
        return pulumi.get(self, "street")

    @street.setter
    def street(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "street", value)

    @property
    @pulumi.getter
    def surname(self) -> Optional[pulumi.Input[str]]:
        """
        Personal surname (RDN SN).
        """
        return pulumi.get(self, "surname")

    @surname.setter
    def surname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "surname", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        """
        Title (RDN T or TITLE).
        """
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> Optional[pulumi.Input[str]]:
        """
        User ID (RDN UID).
        """
        return pulumi.get(self, "user_id")

    @user_id.setter
    def user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_id", value)


@pulumi.input_type
class CertificateCertificateConfigSubjectAlternativeNameArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[str],
                 value: pulumi.Input[str]):
        """
        :param pulumi.Input[str] type: The subject alternative name type. Currently only DNS domain or host names and IP addresses are supported.
        :param pulumi.Input[str] value: The subject alternative name.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        """
        The subject alternative name type. Currently only DNS domain or host names and IP addresses are supported.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[str]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        """
        The subject alternative name.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class CertificateCertificateConfigValidityArgs:
    def __init__(__self__, *,
                 time_of_validity_not_after: pulumi.Input[str],
                 time_of_validity_not_before: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] time_of_validity_not_after: (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_validity_not_before: (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        pulumi.set(__self__, "time_of_validity_not_after", time_of_validity_not_after)
        if time_of_validity_not_before is not None:
            pulumi.set(__self__, "time_of_validity_not_before", time_of_validity_not_before)

    @property
    @pulumi.getter(name="timeOfValidityNotAfter")
    def time_of_validity_not_after(self) -> pulumi.Input[str]:
        """
        (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_after")

    @time_of_validity_not_after.setter
    def time_of_validity_not_after(self, value: pulumi.Input[str]):
        pulumi.set(self, "time_of_validity_not_after", value)

    @property
    @pulumi.getter(name="timeOfValidityNotBefore")
    def time_of_validity_not_before(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_before")

    @time_of_validity_not_before.setter
    def time_of_validity_not_before(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_before", value)


@pulumi.input_type
class CertificateCertificateRevocationListDetailArgs:
    def __init__(__self__, *,
                 custom_formatted_urls: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 object_storage_configs: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateRevocationListDetailObjectStorageConfigArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] custom_formatted_urls: Optional CRL access points, expressed using a format where the version number of the issuing CA is inserted wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        :param pulumi.Input[Sequence[pulumi.Input['CertificateCertificateRevocationListDetailObjectStorageConfigArgs']]] object_storage_configs: The details of the Object Storage bucket configured to store the certificate revocation list (CRL).
        """
        if custom_formatted_urls is not None:
            pulumi.set(__self__, "custom_formatted_urls", custom_formatted_urls)
        if object_storage_configs is not None:
            pulumi.set(__self__, "object_storage_configs", object_storage_configs)

    @property
    @pulumi.getter(name="customFormattedUrls")
    def custom_formatted_urls(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Optional CRL access points, expressed using a format where the version number of the issuing CA is inserted wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        return pulumi.get(self, "custom_formatted_urls")

    @custom_formatted_urls.setter
    def custom_formatted_urls(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "custom_formatted_urls", value)

    @property
    @pulumi.getter(name="objectStorageConfigs")
    def object_storage_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateRevocationListDetailObjectStorageConfigArgs']]]]:
        """
        The details of the Object Storage bucket configured to store the certificate revocation list (CRL).
        """
        return pulumi.get(self, "object_storage_configs")

    @object_storage_configs.setter
    def object_storage_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCertificateRevocationListDetailObjectStorageConfigArgs']]]]):
        pulumi.set(self, "object_storage_configs", value)


@pulumi.input_type
class CertificateCertificateRevocationListDetailObjectStorageConfigArgs:
    def __init__(__self__, *,
                 object_storage_bucket_name: Optional[pulumi.Input[str]] = None,
                 object_storage_namespace: Optional[pulumi.Input[str]] = None,
                 object_storage_object_name_format: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] object_storage_bucket_name: The name of the bucket where the CRL is stored.
        :param pulumi.Input[str] object_storage_namespace: The tenancy of the bucket where the CRL is stored.
        :param pulumi.Input[str] object_storage_object_name_format: The object name in the bucket where the CRL is stored, expressed using a format where the version number of the issuing CA is inserted as part of the Object Storage object name wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        if object_storage_bucket_name is not None:
            pulumi.set(__self__, "object_storage_bucket_name", object_storage_bucket_name)
        if object_storage_namespace is not None:
            pulumi.set(__self__, "object_storage_namespace", object_storage_namespace)
        if object_storage_object_name_format is not None:
            pulumi.set(__self__, "object_storage_object_name_format", object_storage_object_name_format)

    @property
    @pulumi.getter(name="objectStorageBucketName")
    def object_storage_bucket_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the bucket where the CRL is stored.
        """
        return pulumi.get(self, "object_storage_bucket_name")

    @object_storage_bucket_name.setter
    def object_storage_bucket_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "object_storage_bucket_name", value)

    @property
    @pulumi.getter(name="objectStorageNamespace")
    def object_storage_namespace(self) -> Optional[pulumi.Input[str]]:
        """
        The tenancy of the bucket where the CRL is stored.
        """
        return pulumi.get(self, "object_storage_namespace")

    @object_storage_namespace.setter
    def object_storage_namespace(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "object_storage_namespace", value)

    @property
    @pulumi.getter(name="objectStorageObjectNameFormat")
    def object_storage_object_name_format(self) -> Optional[pulumi.Input[str]]:
        """
        The object name in the bucket where the CRL is stored, expressed using a format where the version number of the issuing CA is inserted as part of the Object Storage object name wherever you include a pair of curly braces. This versioning scheme helps avoid collisions when new CA versions are created. For example, myCrlFileIssuedFromCAVersion{}.crl becomes myCrlFileIssuedFromCAVersion2.crl for CA version 2.
        """
        return pulumi.get(self, "object_storage_object_name_format")

    @object_storage_object_name_format.setter
    def object_storage_object_name_format(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "object_storage_object_name_format", value)


@pulumi.input_type
class CertificateCertificateRuleArgs:
    def __init__(__self__, *,
                 advance_renewal_period: pulumi.Input[str],
                 renewal_interval: pulumi.Input[str],
                 rule_type: pulumi.Input[str]):
        """
        :param pulumi.Input[str] advance_renewal_period: (Updatable) A property specifying the period of time, in days, before the certificate's targeted renewal that the process should occur. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        :param pulumi.Input[str] renewal_interval: (Updatable) A property specifying how often, in days, a certificate should be renewed. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        :param pulumi.Input[str] rule_type: (Updatable) The type of rule.
        """
        pulumi.set(__self__, "advance_renewal_period", advance_renewal_period)
        pulumi.set(__self__, "renewal_interval", renewal_interval)
        pulumi.set(__self__, "rule_type", rule_type)

    @property
    @pulumi.getter(name="advanceRenewalPeriod")
    def advance_renewal_period(self) -> pulumi.Input[str]:
        """
        (Updatable) A property specifying the period of time, in days, before the certificate's targeted renewal that the process should occur. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        """
        return pulumi.get(self, "advance_renewal_period")

    @advance_renewal_period.setter
    def advance_renewal_period(self, value: pulumi.Input[str]):
        pulumi.set(self, "advance_renewal_period", value)

    @property
    @pulumi.getter(name="renewalInterval")
    def renewal_interval(self) -> pulumi.Input[str]:
        """
        (Updatable) A property specifying how often, in days, a certificate should be renewed. Expressed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) format.
        """
        return pulumi.get(self, "renewal_interval")

    @renewal_interval.setter
    def renewal_interval(self, value: pulumi.Input[str]):
        pulumi.set(self, "renewal_interval", value)

    @property
    @pulumi.getter(name="ruleType")
    def rule_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The type of rule.
        """
        return pulumi.get(self, "rule_type")

    @rule_type.setter
    def rule_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "rule_type", value)


@pulumi.input_type
class CertificateCurrentVersionArgs:
    def __init__(__self__, *,
                 certificate_id: Optional[pulumi.Input[str]] = None,
                 issuer_ca_version_number: Optional[pulumi.Input[str]] = None,
                 revocation_statuses: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionRevocationStatusArgs']]]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 stages: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 subject_alternative_names: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionSubjectAlternativeNameArgs']]]] = None,
                 time_created: Optional[pulumi.Input[str]] = None,
                 time_of_deletion: Optional[pulumi.Input[str]] = None,
                 validities: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionValidityArgs']]]] = None,
                 version_name: Optional[pulumi.Input[str]] = None,
                 version_number: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] certificate_id: The OCID of the certificate.
        :param pulumi.Input[str] issuer_ca_version_number: The version number of the issuing certificate authority (CA).
        :param pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionRevocationStatusArgs']]] revocation_statuses: The current revocation status of the entity.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] stages: A list of rotation states for this certificate version.
        :param pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionSubjectAlternativeNameArgs']]] subject_alternative_names: A list of subject alternative names.
        :param pulumi.Input[str] time_created: A property indicating when the certificate was created, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_deletion: An optional property indicating when to delete the certificate version, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionValidityArgs']]] validities: (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        :param pulumi.Input[str] version_name: (Updatable) A name for the certificate. When the value is not null, a name is unique across versions of a given certificate.
        :param pulumi.Input[str] version_number: The version number of the certificate.
        """
        if certificate_id is not None:
            pulumi.set(__self__, "certificate_id", certificate_id)
        if issuer_ca_version_number is not None:
            pulumi.set(__self__, "issuer_ca_version_number", issuer_ca_version_number)
        if revocation_statuses is not None:
            pulumi.set(__self__, "revocation_statuses", revocation_statuses)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if stages is not None:
            pulumi.set(__self__, "stages", stages)
        if subject_alternative_names is not None:
            pulumi.set(__self__, "subject_alternative_names", subject_alternative_names)
        if time_created is not None:
            pulumi.set(__self__, "time_created", time_created)
        if time_of_deletion is not None:
            pulumi.set(__self__, "time_of_deletion", time_of_deletion)
        if validities is not None:
            pulumi.set(__self__, "validities", validities)
        if version_name is not None:
            pulumi.set(__self__, "version_name", version_name)
        if version_number is not None:
            pulumi.set(__self__, "version_number", version_number)

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the certificate.
        """
        return pulumi.get(self, "certificate_id")

    @certificate_id.setter
    def certificate_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate_id", value)

    @property
    @pulumi.getter(name="issuerCaVersionNumber")
    def issuer_ca_version_number(self) -> Optional[pulumi.Input[str]]:
        """
        The version number of the issuing certificate authority (CA).
        """
        return pulumi.get(self, "issuer_ca_version_number")

    @issuer_ca_version_number.setter
    def issuer_ca_version_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "issuer_ca_version_number", value)

    @property
    @pulumi.getter(name="revocationStatuses")
    def revocation_statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionRevocationStatusArgs']]]]:
        """
        The current revocation status of the entity.
        """
        return pulumi.get(self, "revocation_statuses")

    @revocation_statuses.setter
    def revocation_statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionRevocationStatusArgs']]]]):
        pulumi.set(self, "revocation_statuses", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter
    def stages(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of rotation states for this certificate version.
        """
        return pulumi.get(self, "stages")

    @stages.setter
    def stages(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "stages", value)

    @property
    @pulumi.getter(name="subjectAlternativeNames")
    def subject_alternative_names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionSubjectAlternativeNameArgs']]]]:
        """
        A list of subject alternative names.
        """
        return pulumi.get(self, "subject_alternative_names")

    @subject_alternative_names.setter
    def subject_alternative_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionSubjectAlternativeNameArgs']]]]):
        pulumi.set(self, "subject_alternative_names", value)

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> Optional[pulumi.Input[str]]:
        """
        A property indicating when the certificate was created, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_created")

    @time_created.setter
    def time_created(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_created", value)

    @property
    @pulumi.getter(name="timeOfDeletion")
    def time_of_deletion(self) -> Optional[pulumi.Input[str]]:
        """
        An optional property indicating when to delete the certificate version, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_deletion")

    @time_of_deletion.setter
    def time_of_deletion(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_deletion", value)

    @property
    @pulumi.getter
    def validities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionValidityArgs']]]]:
        """
        (Updatable) An object that describes a period of time during which an entity is valid. If this is not provided when you create a certificate, the validity of the issuing CA is used.
        """
        return pulumi.get(self, "validities")

    @validities.setter
    def validities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CertificateCurrentVersionValidityArgs']]]]):
        pulumi.set(self, "validities", value)

    @property
    @pulumi.getter(name="versionName")
    def version_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A name for the certificate. When the value is not null, a name is unique across versions of a given certificate.
        """
        return pulumi.get(self, "version_name")

    @version_name.setter
    def version_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_name", value)

    @property
    @pulumi.getter(name="versionNumber")
    def version_number(self) -> Optional[pulumi.Input[str]]:
        """
        The version number of the certificate.
        """
        return pulumi.get(self, "version_number")

    @version_number.setter
    def version_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version_number", value)


@pulumi.input_type
class CertificateCurrentVersionRevocationStatusArgs:
    def __init__(__self__, *,
                 revocation_reason: Optional[pulumi.Input[str]] = None,
                 time_of_revocation: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] revocation_reason: The reason the certificate or certificate authority (CA) was revoked.
        :param pulumi.Input[str] time_of_revocation: The time when the entity was revoked, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        if revocation_reason is not None:
            pulumi.set(__self__, "revocation_reason", revocation_reason)
        if time_of_revocation is not None:
            pulumi.set(__self__, "time_of_revocation", time_of_revocation)

    @property
    @pulumi.getter(name="revocationReason")
    def revocation_reason(self) -> Optional[pulumi.Input[str]]:
        """
        The reason the certificate or certificate authority (CA) was revoked.
        """
        return pulumi.get(self, "revocation_reason")

    @revocation_reason.setter
    def revocation_reason(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "revocation_reason", value)

    @property
    @pulumi.getter(name="timeOfRevocation")
    def time_of_revocation(self) -> Optional[pulumi.Input[str]]:
        """
        The time when the entity was revoked, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_revocation")

    @time_of_revocation.setter
    def time_of_revocation(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_revocation", value)


@pulumi.input_type
class CertificateCurrentVersionSubjectAlternativeNameArgs:
    def __init__(__self__, *,
                 type: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] type: The subject alternative name type. Currently only DNS domain or host names and IP addresses are supported.
        :param pulumi.Input[str] value: The subject alternative name.
        """
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        The subject alternative name type. Currently only DNS domain or host names and IP addresses are supported.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        """
        The subject alternative name.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class CertificateCurrentVersionValidityArgs:
    def __init__(__self__, *,
                 time_of_validity_not_after: Optional[pulumi.Input[str]] = None,
                 time_of_validity_not_before: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] time_of_validity_not_after: (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        :param pulumi.Input[str] time_of_validity_not_before: (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        if time_of_validity_not_after is not None:
            pulumi.set(__self__, "time_of_validity_not_after", time_of_validity_not_after)
        if time_of_validity_not_before is not None:
            pulumi.set(__self__, "time_of_validity_not_before", time_of_validity_not_before)

    @property
    @pulumi.getter(name="timeOfValidityNotAfter")
    def time_of_validity_not_after(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period ends, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_after")

    @time_of_validity_not_after.setter
    def time_of_validity_not_after(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_after", value)

    @property
    @pulumi.getter(name="timeOfValidityNotBefore")
    def time_of_validity_not_before(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The date on which the certificate validity period begins, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format. Example: `2019-04-03T21:10:29.600Z`
        """
        return pulumi.get(self, "time_of_validity_not_before")

    @time_of_validity_not_before.setter
    def time_of_validity_not_before(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_of_validity_not_before", value)


@pulumi.input_type
class CertificateSubjectArgs:
    def __init__(__self__, *,
                 common_name: Optional[pulumi.Input[str]] = None,
                 country: Optional[pulumi.Input[str]] = None,
                 distinguished_name_qualifier: Optional[pulumi.Input[str]] = None,
                 domain_component: Optional[pulumi.Input[str]] = None,
                 generation_qualifier: Optional[pulumi.Input[str]] = None,
                 given_name: Optional[pulumi.Input[str]] = None,
                 initials: Optional[pulumi.Input[str]] = None,
                 locality_name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 organizational_unit: Optional[pulumi.Input[str]] = None,
                 pseudonym: Optional[pulumi.Input[str]] = None,
                 serial_number: Optional[pulumi.Input[str]] = None,
                 state_or_province_name: Optional[pulumi.Input[str]] = None,
                 street: Optional[pulumi.Input[str]] = None,
                 surname: Optional[pulumi.Input[str]] = None,
                 title: Optional[pulumi.Input[str]] = None,
                 user_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] common_name: Common name or fully-qualified domain name (RDN CN).
        :param pulumi.Input[str] country: Country name (RDN C).
        :param pulumi.Input[str] distinguished_name_qualifier: Distinguished name qualifier(RDN DNQ).
        :param pulumi.Input[str] domain_component: Domain component (RDN DC).
        :param pulumi.Input[str] generation_qualifier: Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        :param pulumi.Input[str] given_name: Personal given name (RDN G or GN).
        :param pulumi.Input[str] initials: Personal initials.
        :param pulumi.Input[str] locality_name: Locality (RDN L).
        :param pulumi.Input[str] organization: Organization (RDN O).
        :param pulumi.Input[str] organizational_unit: Organizational unit (RDN OU).
        :param pulumi.Input[str] pseudonym: Subject pseudonym.
        :param pulumi.Input[str] serial_number: Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        :param pulumi.Input[str] state_or_province_name: State or province name (RDN ST or S).
        :param pulumi.Input[str] street: Street address (RDN STREET).
        :param pulumi.Input[str] surname: Personal surname (RDN SN).
        :param pulumi.Input[str] title: Title (RDN T or TITLE).
        :param pulumi.Input[str] user_id: User ID (RDN UID).
        """
        if common_name is not None:
            pulumi.set(__self__, "common_name", common_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if distinguished_name_qualifier is not None:
            pulumi.set(__self__, "distinguished_name_qualifier", distinguished_name_qualifier)
        if domain_component is not None:
            pulumi.set(__self__, "domain_component", domain_component)
        if generation_qualifier is not None:
            pulumi.set(__self__, "generation_qualifier", generation_qualifier)
        if given_name is not None:
            pulumi.set(__self__, "given_name", given_name)
        if initials is not None:
            pulumi.set(__self__, "initials", initials)
        if locality_name is not None:
            pulumi.set(__self__, "locality_name", locality_name)
        if organization is not None:
            pulumi.set(__self__, "organization", organization)
        if organizational_unit is not None:
            pulumi.set(__self__, "organizational_unit", organizational_unit)
        if pseudonym is not None:
            pulumi.set(__self__, "pseudonym", pseudonym)
        if serial_number is not None:
            pulumi.set(__self__, "serial_number", serial_number)
        if state_or_province_name is not None:
            pulumi.set(__self__, "state_or_province_name", state_or_province_name)
        if street is not None:
            pulumi.set(__self__, "street", street)
        if surname is not None:
            pulumi.set(__self__, "surname", surname)
        if title is not None:
            pulumi.set(__self__, "title", title)
        if user_id is not None:
            pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter(name="commonName")
    def common_name(self) -> Optional[pulumi.Input[str]]:
        """
        Common name or fully-qualified domain name (RDN CN).
        """
        return pulumi.get(self, "common_name")

    @common_name.setter
    def common_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "common_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        Country name (RDN C).
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="distinguishedNameQualifier")
    def distinguished_name_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Distinguished name qualifier(RDN DNQ).
        """
        return pulumi.get(self, "distinguished_name_qualifier")

    @distinguished_name_qualifier.setter
    def distinguished_name_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "distinguished_name_qualifier", value)

    @property
    @pulumi.getter(name="domainComponent")
    def domain_component(self) -> Optional[pulumi.Input[str]]:
        """
        Domain component (RDN DC).
        """
        return pulumi.get(self, "domain_component")

    @domain_component.setter
    def domain_component(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "domain_component", value)

    @property
    @pulumi.getter(name="generationQualifier")
    def generation_qualifier(self) -> Optional[pulumi.Input[str]]:
        """
        Personal generational qualifier (for example, Sr., Jr. 3rd, or IV).
        """
        return pulumi.get(self, "generation_qualifier")

    @generation_qualifier.setter
    def generation_qualifier(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "generation_qualifier", value)

    @property
    @pulumi.getter(name="givenName")
    def given_name(self) -> Optional[pulumi.Input[str]]:
        """
        Personal given name (RDN G or GN).
        """
        return pulumi.get(self, "given_name")

    @given_name.setter
    def given_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "given_name", value)

    @property
    @pulumi.getter
    def initials(self) -> Optional[pulumi.Input[str]]:
        """
        Personal initials.
        """
        return pulumi.get(self, "initials")

    @initials.setter
    def initials(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "initials", value)

    @property
    @pulumi.getter(name="localityName")
    def locality_name(self) -> Optional[pulumi.Input[str]]:
        """
        Locality (RDN L).
        """
        return pulumi.get(self, "locality_name")

    @locality_name.setter
    def locality_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "locality_name", value)

    @property
    @pulumi.getter
    def organization(self) -> Optional[pulumi.Input[str]]:
        """
        Organization (RDN O).
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter(name="organizationalUnit")
    def organizational_unit(self) -> Optional[pulumi.Input[str]]:
        """
        Organizational unit (RDN OU).
        """
        return pulumi.get(self, "organizational_unit")

    @organizational_unit.setter
    def organizational_unit(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organizational_unit", value)

    @property
    @pulumi.getter
    def pseudonym(self) -> Optional[pulumi.Input[str]]:
        """
        Subject pseudonym.
        """
        return pulumi.get(self, "pseudonym")

    @pseudonym.setter
    def pseudonym(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "pseudonym", value)

    @property
    @pulumi.getter(name="serialNumber")
    def serial_number(self) -> Optional[pulumi.Input[str]]:
        """
        Unique subject identifier, which is not the same as the certificate serial number (RDN SERIALNUMBER).
        """
        return pulumi.get(self, "serial_number")

    @serial_number.setter
    def serial_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serial_number", value)

    @property
    @pulumi.getter(name="stateOrProvinceName")
    def state_or_province_name(self) -> Optional[pulumi.Input[str]]:
        """
        State or province name (RDN ST or S).
        """
        return pulumi.get(self, "state_or_province_name")

    @state_or_province_name.setter
    def state_or_province_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state_or_province_name", value)

    @property
    @pulumi.getter
    def street(self) -> Optional[pulumi.Input[str]]:
        """
        Street address (RDN STREET).
        """
        return pulumi.get(self, "street")

    @street.setter
    def street(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "street", value)

    @property
    @pulumi.getter
    def surname(self) -> Optional[pulumi.Input[str]]:
        """
        Personal surname (RDN SN).
        """
        return pulumi.get(self, "surname")

    @surname.setter
    def surname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "surname", value)

    @property
    @pulumi.getter
    def title(self) -> Optional[pulumi.Input[str]]:
        """
        Title (RDN T or TITLE).
        """
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> Optional[pulumi.Input[str]]:
        """
        User ID (RDN UID).
        """
        return pulumi.get(self, "user_id")

    @user_id.setter
    def user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_id", value)


@pulumi.input_type
class GetAssociationsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter that returns only resources that match the specified name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter that returns only resources that match the specified name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetCaBundlesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter that returns only resources that match the specified name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter that returns only resources that match the specified name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetCertificateAuthoritiesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter that returns only resources that match the specified name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter that returns only resources that match the specified name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetCertificateAuthorityVersionsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetCertificateVersionsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetCertificatesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter that returns only resources that match the specified name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter that returns only resources that match the specified name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


