# 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
from . import outputs

__all__ = [
    'ApiValidationResult',
    'DeploymentSpecification',
    'DeploymentSpecificationLoggingPolicies',
    'DeploymentSpecificationLoggingPoliciesAccessLog',
    'DeploymentSpecificationLoggingPoliciesExecutionLog',
    'DeploymentSpecificationRequestPolicies',
    'DeploymentSpecificationRequestPoliciesAuthentication',
    'DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys',
    'DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeaders',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeaders',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeaders',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetails',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey',
    'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetails',
    'DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim',
    'DeploymentSpecificationRequestPoliciesCors',
    'DeploymentSpecificationRequestPoliciesDynamicAuthentication',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeaders',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeaders',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeaders',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetails',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetails',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey',
    'DeploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSource',
    'DeploymentSpecificationRequestPoliciesMutualTls',
    'DeploymentSpecificationRequestPoliciesRateLimiting',
    'DeploymentSpecificationRequestPoliciesUsagePlans',
    'DeploymentSpecificationRoute',
    'DeploymentSpecificationRouteBackend',
    'DeploymentSpecificationRouteBackendHeader',
    'DeploymentSpecificationRouteBackendRoutingBackend',
    'DeploymentSpecificationRouteBackendRoutingBackendBackend',
    'DeploymentSpecificationRouteBackendRoutingBackendBackendHeader',
    'DeploymentSpecificationRouteBackendRoutingBackendKey',
    'DeploymentSpecificationRouteBackendSelectionSource',
    'DeploymentSpecificationRouteLoggingPolicies',
    'DeploymentSpecificationRouteLoggingPoliciesAccessLog',
    'DeploymentSpecificationRouteLoggingPoliciesExecutionLog',
    'DeploymentSpecificationRouteRequestPolicies',
    'DeploymentSpecificationRouteRequestPoliciesAuthorization',
    'DeploymentSpecificationRouteRequestPoliciesBodyValidation',
    'DeploymentSpecificationRouteRequestPoliciesBodyValidationContent',
    'DeploymentSpecificationRouteRequestPoliciesCors',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformations',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeaders',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersItem',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeaders',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeaders',
    'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem',
    'DeploymentSpecificationRouteRequestPoliciesHeaderValidations',
    'DeploymentSpecificationRouteRequestPoliciesHeaderValidationsHeader',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParameters',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersItem',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParameters',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParameters',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations',
    'DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsParameter',
    'DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup',
    'DeploymentSpecificationRouteResponsePolicies',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformations',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeaders',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersItem',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeaders',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeaders',
    'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem',
    'DeploymentSpecificationRouteResponsePoliciesResponseCacheStore',
    'GatewayCaBundle',
    'GatewayIpAddress',
    'GatewayResponseCacheDetails',
    'GatewayResponseCacheDetailsServer',
    'SubscriberClient',
    'UsagePlanEntitlement',
    'UsagePlanEntitlementQuota',
    'UsagePlanEntitlementRateLimit',
    'UsagePlanEntitlementTarget',
    'GetApiDeploymentSpecificationLoggingPolicyResult',
    'GetApiDeploymentSpecificationLoggingPolicyAccessLogResult',
    'GetApiDeploymentSpecificationLoggingPolicyExecutionLogResult',
    'GetApiDeploymentSpecificationRequestPolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult',
    'GetApiDeploymentSpecificationRequestPolicyCorResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult',
    'GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult',
    'GetApiDeploymentSpecificationRequestPolicyMutualTlResult',
    'GetApiDeploymentSpecificationRequestPolicyRateLimitingResult',
    'GetApiDeploymentSpecificationRequestPolicyUsagePlanResult',
    'GetApiDeploymentSpecificationRouteResult',
    'GetApiDeploymentSpecificationRouteBackendResult',
    'GetApiDeploymentSpecificationRouteBackendHeaderResult',
    'GetApiDeploymentSpecificationRouteBackendRoutingBackendResult',
    'GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendResult',
    'GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult',
    'GetApiDeploymentSpecificationRouteBackendRoutingBackendKeyResult',
    'GetApiDeploymentSpecificationRouteBackendSelectionSourceResult',
    'GetApiDeploymentSpecificationRouteLoggingPolicyResult',
    'GetApiDeploymentSpecificationRouteLoggingPolicyAccessLogResult',
    'GetApiDeploymentSpecificationRouteLoggingPolicyExecutionLogResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyAuthorizationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyCorResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult',
    'GetApiDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult',
    'GetApiDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult',
    'GetApiValidationResultResult',
    'GetApiValidationValidationResult',
    'GetApiValidationValidationDetailResult',
    'GetApiValidationValidationDetailSrcResult',
    'GetApisApiCollectionResult',
    'GetApisApiCollectionItemResult',
    'GetApisApiCollectionItemValidationResultResult',
    'GetApisFilterResult',
    'GetCertificatesCertificateCollectionResult',
    'GetCertificatesCertificateCollectionItemResult',
    'GetCertificatesFilterResult',
    'GetDeploymentSpecificationResult',
    'GetDeploymentSpecificationLoggingPolicyResult',
    'GetDeploymentSpecificationLoggingPolicyAccessLogResult',
    'GetDeploymentSpecificationLoggingPolicyExecutionLogResult',
    'GetDeploymentSpecificationRequestPolicyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult',
    'GetDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult',
    'GetDeploymentSpecificationRequestPolicyCorResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult',
    'GetDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult',
    'GetDeploymentSpecificationRequestPolicyMutualTlResult',
    'GetDeploymentSpecificationRequestPolicyRateLimitingResult',
    'GetDeploymentSpecificationRequestPolicyUsagePlanResult',
    'GetDeploymentSpecificationRouteResult',
    'GetDeploymentSpecificationRouteBackendResult',
    'GetDeploymentSpecificationRouteBackendHeaderResult',
    'GetDeploymentSpecificationRouteBackendRoutingBackendResult',
    'GetDeploymentSpecificationRouteBackendRoutingBackendBackendResult',
    'GetDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult',
    'GetDeploymentSpecificationRouteBackendRoutingBackendKeyResult',
    'GetDeploymentSpecificationRouteBackendSelectionSourceResult',
    'GetDeploymentSpecificationRouteLoggingPolicyResult',
    'GetDeploymentSpecificationRouteLoggingPolicyAccessLogResult',
    'GetDeploymentSpecificationRouteLoggingPolicyExecutionLogResult',
    'GetDeploymentSpecificationRouteRequestPolicyResult',
    'GetDeploymentSpecificationRouteRequestPolicyAuthorizationResult',
    'GetDeploymentSpecificationRouteRequestPolicyBodyValidationResult',
    'GetDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult',
    'GetDeploymentSpecificationRouteRequestPolicyCorResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderValidationResult',
    'GetDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult',
    'GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult',
    'GetDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult',
    'GetDeploymentSpecificationRouteResponsePolicyResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult',
    'GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult',
    'GetDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult',
    'GetDeploymentsDeploymentCollectionResult',
    'GetDeploymentsDeploymentCollectionSpecificationResult',
    'GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyAccessLogResult',
    'GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyExecutionLogResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationVerifyClaimResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyCorResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyMutualTlResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyRateLimitingResult',
    'GetDeploymentsDeploymentCollectionSpecificationRequestPolicyUsagePlanResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendKeyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteBackendSelectionSourceResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyAccessLogResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyExecutionLogResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyAuthorizationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationContentResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyCorResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationParameterResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResponseCacheLookupResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult',
    'GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResponseCacheStoreResult',
    'GetDeploymentsFilterResult',
    'GetGatewayCaBundleResult',
    'GetGatewayIpAddressResult',
    'GetGatewayResponseCacheDetailResult',
    'GetGatewayResponseCacheDetailServerResult',
    'GetGatewaysFilterResult',
    'GetGatewaysGatewayCollectionResult',
    'GetGatewaysGatewayCollectionCaBundleResult',
    'GetGatewaysGatewayCollectionIpAddressResult',
    'GetGatewaysGatewayCollectionResponseCacheDetailResult',
    'GetGatewaysGatewayCollectionResponseCacheDetailServerResult',
    'GetSubscriberClientResult',
    'GetSubscribersFilterResult',
    'GetSubscribersSubscriberCollectionResult',
    'GetSubscribersSubscriberCollectionItemResult',
    'GetSubscribersSubscriberCollectionItemClientResult',
    'GetUsagePlanEntitlementResult',
    'GetUsagePlanEntitlementQuotaResult',
    'GetUsagePlanEntitlementRateLimitResult',
    'GetUsagePlanEntitlementTargetResult',
    'GetUsagePlansFilterResult',
    'GetUsagePlansUsagePlanCollectionResult',
    'GetUsagePlansUsagePlanCollectionItemResult',
    'GetUsagePlansUsagePlanCollectionItemEntitlementResult',
    'GetUsagePlansUsagePlanCollectionItemEntitlementQuotaResult',
    'GetUsagePlansUsagePlanCollectionItemEntitlementRateLimitResult',
    'GetUsagePlansUsagePlanCollectionItemEntitlementTargetResult',
]

@pulumi.output_type
class ApiValidationResult(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 result: Optional[str] = None):
        """
        :param str name: Name of the validation.
        :param str result: Result of the validation.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if result is not None:
            pulumi.set(__self__, "result", result)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the validation.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def result(self) -> Optional[str]:
        """
        Result of the validation.
        """
        return pulumi.get(self, "result")


@pulumi.output_type
class DeploymentSpecification(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "loggingPolicies":
            suggest = "logging_policies"
        elif key == "requestPolicies":
            suggest = "request_policies"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecification. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecification.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecification.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 routes: Sequence['outputs.DeploymentSpecificationRoute'],
                 logging_policies: Optional['outputs.DeploymentSpecificationLoggingPolicies'] = None,
                 request_policies: Optional['outputs.DeploymentSpecificationRequestPolicies'] = None):
        """
        :param Sequence['DeploymentSpecificationRouteArgs'] routes: (Updatable) A list of routes that this API exposes.
        :param 'DeploymentSpecificationLoggingPoliciesArgs' logging_policies: (Updatable) Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param 'DeploymentSpecificationRequestPoliciesArgs' request_policies: (Updatable) Behavior applied to any requests received by the API on this route.
        """
        pulumi.set(__self__, "routes", routes)
        if logging_policies is not None:
            pulumi.set(__self__, "logging_policies", logging_policies)
        if request_policies is not None:
            pulumi.set(__self__, "request_policies", request_policies)

    @property
    @pulumi.getter
    def routes(self) -> Sequence['outputs.DeploymentSpecificationRoute']:
        """
        (Updatable) A list of routes that this API exposes.
        """
        return pulumi.get(self, "routes")

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Optional['outputs.DeploymentSpecificationLoggingPolicies']:
        """
        (Updatable) Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Optional['outputs.DeploymentSpecificationRequestPolicies']:
        """
        (Updatable) Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")


@pulumi.output_type
class DeploymentSpecificationLoggingPolicies(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessLog":
            suggest = "access_log"
        elif key == "executionLog":
            suggest = "execution_log"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationLoggingPolicies. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationLoggingPolicies.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationLoggingPolicies.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_log: Optional['outputs.DeploymentSpecificationLoggingPoliciesAccessLog'] = None,
                 execution_log: Optional['outputs.DeploymentSpecificationLoggingPoliciesExecutionLog'] = None):
        """
        :param 'DeploymentSpecificationLoggingPoliciesAccessLogArgs' access_log: (Updatable) Configures the logging policies for the access logs of an API Deployment.
        :param 'DeploymentSpecificationLoggingPoliciesExecutionLogArgs' execution_log: (Updatable) Configures the logging policies for the execution logs of an API Deployment.
        """
        if access_log is not None:
            pulumi.set(__self__, "access_log", access_log)
        if execution_log is not None:
            pulumi.set(__self__, "execution_log", execution_log)

    @property
    @pulumi.getter(name="accessLog")
    def access_log(self) -> Optional['outputs.DeploymentSpecificationLoggingPoliciesAccessLog']:
        """
        (Updatable) Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_log")

    @property
    @pulumi.getter(name="executionLog")
    def execution_log(self) -> Optional['outputs.DeploymentSpecificationLoggingPoliciesExecutionLog']:
        """
        (Updatable) Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_log")


@pulumi.output_type
class DeploymentSpecificationLoggingPoliciesAccessLog(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isEnabled":
            suggest = "is_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationLoggingPoliciesAccessLog. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationLoggingPoliciesAccessLog.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationLoggingPoliciesAccessLog.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_enabled: Optional[bool] = None):
        """
        :param bool is_enabled: (Updatable) Whether this policy is currently enabled.
        """
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class DeploymentSpecificationLoggingPoliciesExecutionLog(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isEnabled":
            suggest = "is_enabled"
        elif key == "logLevel":
            suggest = "log_level"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationLoggingPoliciesExecutionLog. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationLoggingPoliciesExecutionLog.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationLoggingPoliciesExecutionLog.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_enabled: Optional[bool] = None,
                 log_level: Optional[str] = None):
        """
        :param bool is_enabled: (Updatable) Whether this policy is currently enabled.
        :param str log_level: (Updatable) Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if log_level is not None:
            pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> Optional[str]:
        """
        (Updatable) Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class DeploymentSpecificationRequestPolicies(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "dynamicAuthentication":
            suggest = "dynamic_authentication"
        elif key == "mutualTls":
            suggest = "mutual_tls"
        elif key == "rateLimiting":
            suggest = "rate_limiting"
        elif key == "usagePlans":
            suggest = "usage_plans"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPolicies. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPolicies.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPolicies.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 authentication: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthentication'] = None,
                 cors: Optional['outputs.DeploymentSpecificationRequestPoliciesCors'] = None,
                 dynamic_authentication: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthentication'] = None,
                 mutual_tls: Optional['outputs.DeploymentSpecificationRequestPoliciesMutualTls'] = None,
                 rate_limiting: Optional['outputs.DeploymentSpecificationRequestPoliciesRateLimiting'] = None,
                 usage_plans: Optional['outputs.DeploymentSpecificationRequestPoliciesUsagePlans'] = None):
        """
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationArgs' authentication: (Updatable) Information on how to authenticate incoming requests.
        :param 'DeploymentSpecificationRequestPoliciesCorsArgs' cors: (Updatable) Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationArgs' dynamic_authentication: (Updatable) Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        :param 'DeploymentSpecificationRequestPoliciesMutualTlsArgs' mutual_tls: (Updatable) Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        :param 'DeploymentSpecificationRequestPoliciesRateLimitingArgs' rate_limiting: (Updatable) Limit the number of requests that should be handled for the specified window using a specfic key.
        :param 'DeploymentSpecificationRequestPoliciesUsagePlansArgs' usage_plans: (Updatable) Usage plan policies for this deployment
        """
        if authentication is not None:
            pulumi.set(__self__, "authentication", authentication)
        if cors is not None:
            pulumi.set(__self__, "cors", cors)
        if dynamic_authentication is not None:
            pulumi.set(__self__, "dynamic_authentication", dynamic_authentication)
        if mutual_tls is not None:
            pulumi.set(__self__, "mutual_tls", mutual_tls)
        if rate_limiting is not None:
            pulumi.set(__self__, "rate_limiting", rate_limiting)
        if usage_plans is not None:
            pulumi.set(__self__, "usage_plans", usage_plans)

    @property
    @pulumi.getter
    def authentication(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthentication']:
        """
        (Updatable) Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def cors(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesCors']:
        """
        (Updatable) Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="dynamicAuthentication")
    def dynamic_authentication(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthentication']:
        """
        (Updatable) Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        """
        return pulumi.get(self, "dynamic_authentication")

    @property
    @pulumi.getter(name="mutualTls")
    def mutual_tls(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesMutualTls']:
        """
        (Updatable) Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "mutual_tls")

    @property
    @pulumi.getter(name="rateLimiting")
    def rate_limiting(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesRateLimiting']:
        """
        (Updatable) Limit the number of requests that should be handled for the specified window using a specfic key.
        """
        return pulumi.get(self, "rate_limiting")

    @property
    @pulumi.getter(name="usagePlans")
    def usage_plans(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesUsagePlans']:
        """
        (Updatable) Usage plan policies for this deployment
        """
        return pulumi.get(self, "usage_plans")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cacheKeys":
            suggest = "cache_keys"
        elif key == "functionId":
            suggest = "function_id"
        elif key == "isAnonymousAccessAllowed":
            suggest = "is_anonymous_access_allowed"
        elif key == "maxClockSkewInSeconds":
            suggest = "max_clock_skew_in_seconds"
        elif key == "publicKeys":
            suggest = "public_keys"
        elif key == "tokenAuthScheme":
            suggest = "token_auth_scheme"
        elif key == "tokenHeader":
            suggest = "token_header"
        elif key == "tokenQueryParam":
            suggest = "token_query_param"
        elif key == "validationFailurePolicy":
            suggest = "validation_failure_policy"
        elif key == "validationPolicy":
            suggest = "validation_policy"
        elif key == "verifyClaims":
            suggest = "verify_claims"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 audiences: Optional[Sequence[str]] = None,
                 cache_keys: Optional[Sequence[str]] = None,
                 function_id: Optional[str] = None,
                 is_anonymous_access_allowed: Optional[bool] = None,
                 issuers: Optional[Sequence[str]] = None,
                 max_clock_skew_in_seconds: Optional[float] = None,
                 parameters: Optional[Mapping[str, Any]] = None,
                 public_keys: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys'] = None,
                 token_auth_scheme: Optional[str] = None,
                 token_header: Optional[str] = None,
                 token_query_param: Optional[str] = None,
                 validation_failure_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy'] = None,
                 validation_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy'] = None,
                 verify_claims: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim']] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param Sequence[str] audiences: (Updatable) The list of intended recipients for the token.
        :param Sequence[str] cache_keys: (Updatable) A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: (Updatable) Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: (Updatable) A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: (Updatable) The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Mapping[str, Any] parameters: (Updatable)
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysArgs' public_keys: (Updatable) A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: (Updatable) The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: (Updatable) The name of the header containing the authentication token.
        :param str token_query_param: (Updatable) The name of the query parameter containing the authentication token.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyArgs' validation_failure_policy: (Updatable) Policy for defining behaviour on validation failure.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyArgs' validation_policy: (Updatable) Authentication Policies for the Token Authentication types.
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaimArgs'] verify_claims: (Updatable) A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "type", type)
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if cache_keys is not None:
            pulumi.set(__self__, "cache_keys", cache_keys)
        if function_id is not None:
            pulumi.set(__self__, "function_id", function_id)
        if is_anonymous_access_allowed is not None:
            pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        if issuers is not None:
            pulumi.set(__self__, "issuers", issuers)
        if max_clock_skew_in_seconds is not None:
            pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if public_keys is not None:
            pulumi.set(__self__, "public_keys", public_keys)
        if token_auth_scheme is not None:
            pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        if token_header is not None:
            pulumi.set(__self__, "token_header", token_header)
        if token_query_param is not None:
            pulumi.set(__self__, "token_query_param", token_query_param)
        if validation_failure_policy is not None:
            pulumi.set(__self__, "validation_failure_policy", validation_failure_policy)
        if validation_policy is not None:
            pulumi.set(__self__, "validation_policy", validation_policy)
        if verify_claims is not None:
            pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> Optional[bool]:
        """
        (Updatable) Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> Optional[float]:
        """
        (Updatable) The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Mapping[str, Any]]:
        """
        (Updatable)
        """
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys']:
        """
        (Updatable) A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> Optional[str]:
        """
        (Updatable) The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> Optional[str]:
        """
        (Updatable) The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> Optional[str]:
        """
        (Updatable) The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter(name="validationFailurePolicy")
    def validation_failure_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy']:
        """
        (Updatable) Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policy")

    @property
    @pulumi.getter(name="validationPolicy")
    def validation_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy']:
        """
        (Updatable) Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policy")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim']]:
        """
        (Updatable) A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "maxCacheDurationInHours":
            suggest = "max_cache_duration_in_hours"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationPublicKeys.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 keys: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey']] = None,
                 max_cache_duration_in_hours: Optional[int] = None,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeyArgs'] keys: (Updatable) The set of static public keys.
        :param int max_cache_duration_in_hours: (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if keys is not None:
            pulumi.set(__self__, "keys", keys)
        if max_cache_duration_in_hours is not None:
            pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey']]:
        """
        (Updatable) The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyOps":
            suggest = "key_ops"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationPublicKeysKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 format: str,
                 alg: Optional[str] = None,
                 e: Optional[str] = None,
                 key: Optional[str] = None,
                 key_ops: Optional[Sequence[str]] = None,
                 kid: Optional[str] = None,
                 kty: Optional[str] = None,
                 n: Optional[str] = None,
                 use: Optional[str] = None):
        """
        :param str format: (Updatable) The format of the public key.
        :param str alg: (Updatable) The algorithm intended for use with this key.
        :param str e: (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: (Updatable) The operations for which this key is to be used.
        :param str kid: (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: (Updatable) The key type.
        :param str n: (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: (Updatable) The intended use of the public key.
        """
        pulumi.set(__self__, "format", format)
        if alg is not None:
            pulumi.set(__self__, "alg", alg)
        if e is not None:
            pulumi.set(__self__, "e", e)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if key_ops is not None:
            pulumi.set(__self__, "key_ops", key_ops)
        if kid is not None:
            pulumi.set(__self__, "kid", kid)
        if kty is not None:
            pulumi.set(__self__, "kty", kty)
        if n is not None:
            pulumi.set(__self__, "n", n)
        if use is not None:
            pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        (Updatable) The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def alg(self) -> Optional[str]:
        """
        (Updatable) The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> Optional[str]:
        """
        (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> Optional[str]:
        """
        (Updatable) The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> Optional[str]:
        """
        (Updatable) The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientDetails":
            suggest = "client_details"
        elif key == "fallbackRedirectPath":
            suggest = "fallback_redirect_path"
        elif key == "logoutPath":
            suggest = "logout_path"
        elif key == "maxExpiryDurationInHours":
            suggest = "max_expiry_duration_in_hours"
        elif key == "responseCode":
            suggest = "response_code"
        elif key == "responseHeaderTransformations":
            suggest = "response_header_transformations"
        elif key == "responseMessage":
            suggest = "response_message"
        elif key == "responseType":
            suggest = "response_type"
        elif key == "sourceUriDetails":
            suggest = "source_uri_details"
        elif key == "useCookiesForIntermediateSteps":
            suggest = "use_cookies_for_intermediate_steps"
        elif key == "useCookiesForSession":
            suggest = "use_cookies_for_session"
        elif key == "usePkce":
            suggest = "use_pkce"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_details: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails'] = None,
                 fallback_redirect_path: Optional[str] = None,
                 logout_path: Optional[str] = None,
                 max_expiry_duration_in_hours: Optional[int] = None,
                 response_code: Optional[str] = None,
                 response_header_transformations: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations'] = None,
                 response_message: Optional[str] = None,
                 response_type: Optional[str] = None,
                 scopes: Optional[Sequence[str]] = None,
                 source_uri_details: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetails'] = None,
                 use_cookies_for_intermediate_steps: Optional[bool] = None,
                 use_cookies_for_session: Optional[bool] = None,
                 use_pkce: Optional[bool] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetailsArgs' client_details: (Updatable) Client App Credential details.
        :param str fallback_redirect_path: (Updatable) The path to be used as fallback after OAuth2.
        :param str logout_path: (Updatable) The path to be used as logout.
        :param int max_expiry_duration_in_hours: (Updatable) The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: (Updatable) HTTP response code, can include context variables.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsArgs' response_header_transformations: (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: (Updatable) HTTP response message.
        :param str response_type: (Updatable) Response Type.
        :param Sequence[str] scopes: (Updatable) List of scopes.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetailsArgs' source_uri_details: (Updatable) Auth endpoint details.
        :param bool use_cookies_for_intermediate_steps: (Updatable) Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: (Updatable) Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: (Updatable) Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "type", type)
        if client_details is not None:
            pulumi.set(__self__, "client_details", client_details)
        if fallback_redirect_path is not None:
            pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        if logout_path is not None:
            pulumi.set(__self__, "logout_path", logout_path)
        if max_expiry_duration_in_hours is not None:
            pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        if response_code is not None:
            pulumi.set(__self__, "response_code", response_code)
        if response_header_transformations is not None:
            pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        if response_message is not None:
            pulumi.set(__self__, "response_message", response_message)
        if response_type is not None:
            pulumi.set(__self__, "response_type", response_type)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if source_uri_details is not None:
            pulumi.set(__self__, "source_uri_details", source_uri_details)
        if use_cookies_for_intermediate_steps is not None:
            pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        if use_cookies_for_session is not None:
            pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        if use_pkce is not None:
            pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails']:
        """
        (Updatable) Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> Optional[str]:
        """
        (Updatable) The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> Optional[str]:
        """
        (Updatable) The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> Optional[str]:
        """
        (Updatable) HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations']:
        """
        (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> Optional[str]:
        """
        (Updatable) HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> Optional[str]:
        """
        (Updatable) Response Type.
        """
        return pulumi.get(self, "response_type")

    @property
    @pulumi.getter
    def scopes(self) -> Optional[Sequence[str]]:
        """
        (Updatable) List of scopes.
        """
        return pulumi.get(self, "scopes")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetails']:
        """
        (Updatable) Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretId":
            suggest = "client_secret_id"
        elif key == "clientSecretVersionNumber":
            suggest = "client_secret_version_number"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_id: Optional[str] = None,
                 client_secret_id: Optional[str] = None,
                 client_secret_version_number: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str client_id: (Updatable) Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: (Updatable) The version number of the client secret to use.
        """
        pulumi.set(__self__, "type", type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret_id is not None:
            pulumi.set(__self__, "client_secret_id", client_secret_id)
        if client_secret_version_number is not None:
            pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[str]:
        """
        (Updatable) Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> Optional[str]:
        """
        (Updatable) The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterHeaders":
            suggest = "filter_headers"
        elif key == "renameHeaders":
            suggest = "rename_headers"
        elif key == "setHeaders":
            suggest = "set_headers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeaders'] = None,
                 rename_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeaders'] = None,
                 set_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeaders'] = None):
        """
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersArgs' filter_headers: (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersArgs' rename_headers: (Updatable) Rename HTTP headers as they pass through the gateway.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersArgs' set_headers: (Updatable) Set HTTP headers as they pass through the gateway.
        """
        if filter_headers is not None:
            pulumi.set(__self__, "filter_headers", filter_headers)
        if rename_headers is not None:
            pulumi.set(__self__, "rename_headers", rename_headers)
        if set_headers is not None:
            pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeaders']:
        """
        (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeaders']:
        """
        (Updatable) Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeaders']:
        """
        (Updatable) Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem']] = None,
                 type: Optional[str] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItemArgs'] items: (Updatable) The list of headers.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        if items is not None:
            pulumi.set(__self__, "items", items)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem']] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        if items is not None:
            pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        """
        :param str from_: (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> Optional[str]:
        """
        (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> Optional[str]:
        """
        (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem']] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        if items is not None:
            pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ifExists":
            suggest = "if_exists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 if_exists: Optional[str] = None,
                 name: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param str if_exists: (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if if_exists is not None:
            pulumi.set(__self__, "if_exists", if_exists)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> Optional[str]:
        """
        (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetails(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalValidationPolicy":
            suggest = "additional_validation_policy"
        elif key == "clientDetails":
            suggest = "client_details"
        elif key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "maxCacheDurationInHours":
            suggest = "max_cache_duration_in_hours"
        elif key == "sourceUriDetails":
            suggest = "source_uri_details"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 additional_validation_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy'] = None,
                 client_details: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails'] = None,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 keys: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey']] = None,
                 max_cache_duration_in_hours: Optional[int] = None,
                 source_uri_details: Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetails'] = None,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyArgs' additional_validation_policy: (Updatable) Additional JWT validation checks.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetailsArgs' client_details: (Updatable) Client App Credential details.
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeyArgs'] keys: (Updatable) The set of static public keys.
        :param int max_cache_duration_in_hours: (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        :param 'DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetailsArgs' source_uri_details: (Updatable) Auth endpoint details.
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if additional_validation_policy is not None:
            pulumi.set(__self__, "additional_validation_policy", additional_validation_policy)
        if client_details is not None:
            pulumi.set(__self__, "client_details", client_details)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if keys is not None:
            pulumi.set(__self__, "keys", keys)
        if max_cache_duration_in_hours is not None:
            pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        if source_uri_details is not None:
            pulumi.set(__self__, "source_uri_details", source_uri_details)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="additionalValidationPolicy")
    def additional_validation_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy']:
        """
        (Updatable) Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policy")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails']:
        """
        (Updatable) Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey']]:
        """
        (Updatable) The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetails']:
        """
        (Updatable) Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "verifyClaims":
            suggest = "verify_claims"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 audiences: Optional[Sequence[str]] = None,
                 issuers: Optional[Sequence[str]] = None,
                 verify_claims: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim']] = None):
        """
        :param Sequence[str] audiences: (Updatable) The list of intended recipients for the token.
        :param Sequence[str] issuers: (Updatable) A list of parties that could have issued the token.
        :param Sequence['DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: (Updatable) A list of claims which should be validated to consider the token valid.
        """
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if issuers is not None:
            pulumi.set(__self__, "issuers", issuers)
        if verify_claims is not None:
            pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim']]:
        """
        (Updatable) A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isRequired":
            suggest = "is_required"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaim.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_required: Optional[bool] = None,
                 key: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param bool is_required: (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[bool]:
        """
        (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretId":
            suggest = "client_secret_id"
        elif key == "clientSecretVersionNumber":
            suggest = "client_secret_version_number"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_id: Optional[str] = None,
                 client_secret_id: Optional[str] = None,
                 client_secret_version_number: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str client_id: (Updatable) Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: (Updatable) The version number of the client secret to use.
        """
        pulumi.set(__self__, "type", type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret_id is not None:
            pulumi.set(__self__, "client_secret_id", client_secret_id)
        if client_secret_version_number is not None:
            pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[str]:
        """
        (Updatable) Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> Optional[str]:
        """
        (Updatable) The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyOps":
            suggest = "key_ops"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 format: str,
                 alg: Optional[str] = None,
                 e: Optional[str] = None,
                 key: Optional[str] = None,
                 key_ops: Optional[Sequence[str]] = None,
                 kid: Optional[str] = None,
                 kty: Optional[str] = None,
                 n: Optional[str] = None,
                 use: Optional[str] = None):
        """
        :param str format: (Updatable) The format of the public key.
        :param str alg: (Updatable) The algorithm intended for use with this key.
        :param str e: (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: (Updatable) The operations for which this key is to be used.
        :param str kid: (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: (Updatable) The key type.
        :param str n: (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: (Updatable) The intended use of the public key.
        """
        pulumi.set(__self__, "format", format)
        if alg is not None:
            pulumi.set(__self__, "alg", alg)
        if e is not None:
            pulumi.set(__self__, "e", e)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if key_ops is not None:
            pulumi.set(__self__, "key_ops", key_ops)
        if kid is not None:
            pulumi.set(__self__, "kid", kid)
        if kty is not None:
            pulumi.set(__self__, "kty", kty)
        if n is not None:
            pulumi.set(__self__, "n", n)
        if use is not None:
            pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        (Updatable) The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def alg(self) -> Optional[str]:
        """
        (Updatable) The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> Optional[str]:
        """
        (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> Optional[str]:
        """
        (Updatable) The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> Optional[str]:
        """
        (Updatable) The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetails(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isRequired":
            suggest = "is_required"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesAuthenticationVerifyClaim.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_required: Optional[bool] = None,
                 key: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param bool is_required: (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[bool]:
        """
        (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesCors(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedOrigins":
            suggest = "allowed_origins"
        elif key == "allowedHeaders":
            suggest = "allowed_headers"
        elif key == "allowedMethods":
            suggest = "allowed_methods"
        elif key == "exposedHeaders":
            suggest = "exposed_headers"
        elif key == "isAllowCredentialsEnabled":
            suggest = "is_allow_credentials_enabled"
        elif key == "maxAgeInSeconds":
            suggest = "max_age_in_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesCors. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesCors.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesCors.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_origins: Sequence[str],
                 allowed_headers: Optional[Sequence[str]] = None,
                 allowed_methods: Optional[Sequence[str]] = None,
                 exposed_headers: Optional[Sequence[str]] = None,
                 is_allow_credentials_enabled: Optional[bool] = None,
                 max_age_in_seconds: Optional[int] = None):
        """
        :param Sequence[str] allowed_origins: (Updatable) The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] allowed_headers: (Updatable) The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: (Updatable) The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] exposed_headers: (Updatable) The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: (Updatable) Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: (Updatable) The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        if allowed_headers is not None:
            pulumi.set(__self__, "allowed_headers", allowed_headers)
        if allowed_methods is not None:
            pulumi.set(__self__, "allowed_methods", allowed_methods)
        if exposed_headers is not None:
            pulumi.set(__self__, "exposed_headers", exposed_headers)
        if is_allow_credentials_enabled is not None:
            pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        if max_age_in_seconds is not None:
            pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        (Updatable) The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> Optional[int]:
        """
        (Updatable) The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authenticationServers":
            suggest = "authentication_servers"
        elif key == "selectionSource":
            suggest = "selection_source"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 authentication_servers: Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer'],
                 selection_source: 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSource'):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerArgs'] authentication_servers: (Updatable) List of authentication servers to choose from during dynamic authentication.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSourceArgs' selection_source: (Updatable) Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        pulumi.set(__self__, "authentication_servers", authentication_servers)
        pulumi.set(__self__, "selection_source", selection_source)

    @property
    @pulumi.getter(name="authenticationServers")
    def authentication_servers(self) -> Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer']:
        """
        (Updatable) List of authentication servers to choose from during dynamic authentication.
        """
        return pulumi.get(self, "authentication_servers")

    @property
    @pulumi.getter(name="selectionSource")
    def selection_source(self) -> 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSource':
        """
        (Updatable) Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_source")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authenticationServerDetail":
            suggest = "authentication_server_detail"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 authentication_server_detail: 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail',
                 key: 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey'):
        """
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailArgs' authentication_server_detail: (Updatable) Information on how to authenticate incoming requests.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKeyArgs' key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "authentication_server_detail", authentication_server_detail)
        pulumi.set(__self__, "key", key)

    @property
    @pulumi.getter(name="authenticationServerDetail")
    def authentication_server_detail(self) -> 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail':
        """
        (Updatable) Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentication_server_detail")

    @property
    @pulumi.getter
    def key(self) -> 'outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey':
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cacheKeys":
            suggest = "cache_keys"
        elif key == "functionId":
            suggest = "function_id"
        elif key == "isAnonymousAccessAllowed":
            suggest = "is_anonymous_access_allowed"
        elif key == "maxClockSkewInSeconds":
            suggest = "max_clock_skew_in_seconds"
        elif key == "publicKeys":
            suggest = "public_keys"
        elif key == "tokenAuthScheme":
            suggest = "token_auth_scheme"
        elif key == "tokenHeader":
            suggest = "token_header"
        elif key == "tokenQueryParam":
            suggest = "token_query_param"
        elif key == "validationFailurePolicy":
            suggest = "validation_failure_policy"
        elif key == "validationPolicy":
            suggest = "validation_policy"
        elif key == "verifyClaims":
            suggest = "verify_claims"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetail.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 audiences: Optional[Sequence[str]] = None,
                 cache_keys: Optional[Sequence[str]] = None,
                 function_id: Optional[str] = None,
                 is_anonymous_access_allowed: Optional[bool] = None,
                 issuers: Optional[Sequence[str]] = None,
                 max_clock_skew_in_seconds: Optional[float] = None,
                 parameters: Optional[Mapping[str, Any]] = None,
                 public_keys: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys'] = None,
                 token_auth_scheme: Optional[str] = None,
                 token_header: Optional[str] = None,
                 token_query_param: Optional[str] = None,
                 validation_failure_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy'] = None,
                 validation_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy'] = None,
                 verify_claims: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim']] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param Sequence[str] audiences: (Updatable) The list of intended recipients for the token.
        :param Sequence[str] cache_keys: (Updatable) A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: (Updatable) Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: (Updatable) A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: (Updatable) The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Mapping[str, Any] parameters: (Updatable)
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysArgs' public_keys: (Updatable) A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: (Updatable) The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: (Updatable) The name of the header containing the authentication token.
        :param str token_query_param: (Updatable) The name of the query parameter containing the authentication token.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyArgs' validation_failure_policy: (Updatable) Policy for defining behaviour on validation failure.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyArgs' validation_policy: (Updatable) Authentication Policies for the Token Authentication types.
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimArgs'] verify_claims: (Updatable) A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "type", type)
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if cache_keys is not None:
            pulumi.set(__self__, "cache_keys", cache_keys)
        if function_id is not None:
            pulumi.set(__self__, "function_id", function_id)
        if is_anonymous_access_allowed is not None:
            pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        if issuers is not None:
            pulumi.set(__self__, "issuers", issuers)
        if max_clock_skew_in_seconds is not None:
            pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if public_keys is not None:
            pulumi.set(__self__, "public_keys", public_keys)
        if token_auth_scheme is not None:
            pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        if token_header is not None:
            pulumi.set(__self__, "token_header", token_header)
        if token_query_param is not None:
            pulumi.set(__self__, "token_query_param", token_query_param)
        if validation_failure_policy is not None:
            pulumi.set(__self__, "validation_failure_policy", validation_failure_policy)
        if validation_policy is not None:
            pulumi.set(__self__, "validation_policy", validation_policy)
        if verify_claims is not None:
            pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> Optional[bool]:
        """
        (Updatable) Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> Optional[float]:
        """
        (Updatable) The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Mapping[str, Any]]:
        """
        (Updatable)
        """
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys']:
        """
        (Updatable) A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> Optional[str]:
        """
        (Updatable) The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> Optional[str]:
        """
        (Updatable) The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> Optional[str]:
        """
        (Updatable) The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter(name="validationFailurePolicy")
    def validation_failure_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy']:
        """
        (Updatable) Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policy")

    @property
    @pulumi.getter(name="validationPolicy")
    def validation_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy']:
        """
        (Updatable) Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policy")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim']]:
        """
        (Updatable) A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "maxCacheDurationInHours":
            suggest = "max_cache_duration_in_hours"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeys.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 keys: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey']] = None,
                 max_cache_duration_in_hours: Optional[int] = None,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKeyArgs'] keys: (Updatable) The set of static public keys.
        :param int max_cache_duration_in_hours: (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if keys is not None:
            pulumi.set(__self__, "keys", keys)
        if max_cache_duration_in_hours is not None:
            pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey']]:
        """
        (Updatable) The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyOps":
            suggest = "key_ops"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeysKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 format: str,
                 alg: Optional[str] = None,
                 e: Optional[str] = None,
                 key: Optional[str] = None,
                 key_ops: Optional[Sequence[str]] = None,
                 kid: Optional[str] = None,
                 kty: Optional[str] = None,
                 n: Optional[str] = None,
                 use: Optional[str] = None):
        """
        :param str format: (Updatable) The format of the public key.
        :param str alg: (Updatable) The algorithm intended for use with this key.
        :param str e: (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: (Updatable) The operations for which this key is to be used.
        :param str kid: (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: (Updatable) The key type.
        :param str n: (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: (Updatable) The intended use of the public key.
        """
        pulumi.set(__self__, "format", format)
        if alg is not None:
            pulumi.set(__self__, "alg", alg)
        if e is not None:
            pulumi.set(__self__, "e", e)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if key_ops is not None:
            pulumi.set(__self__, "key_ops", key_ops)
        if kid is not None:
            pulumi.set(__self__, "kid", kid)
        if kty is not None:
            pulumi.set(__self__, "kty", kty)
        if n is not None:
            pulumi.set(__self__, "n", n)
        if use is not None:
            pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        (Updatable) The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def alg(self) -> Optional[str]:
        """
        (Updatable) The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> Optional[str]:
        """
        (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> Optional[str]:
        """
        (Updatable) The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> Optional[str]:
        """
        (Updatable) The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientDetails":
            suggest = "client_details"
        elif key == "fallbackRedirectPath":
            suggest = "fallback_redirect_path"
        elif key == "logoutPath":
            suggest = "logout_path"
        elif key == "maxExpiryDurationInHours":
            suggest = "max_expiry_duration_in_hours"
        elif key == "responseCode":
            suggest = "response_code"
        elif key == "responseHeaderTransformations":
            suggest = "response_header_transformations"
        elif key == "responseMessage":
            suggest = "response_message"
        elif key == "responseType":
            suggest = "response_type"
        elif key == "sourceUriDetails":
            suggest = "source_uri_details"
        elif key == "useCookiesForIntermediateSteps":
            suggest = "use_cookies_for_intermediate_steps"
        elif key == "useCookiesForSession":
            suggest = "use_cookies_for_session"
        elif key == "usePkce":
            suggest = "use_pkce"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_details: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails'] = None,
                 fallback_redirect_path: Optional[str] = None,
                 logout_path: Optional[str] = None,
                 max_expiry_duration_in_hours: Optional[int] = None,
                 response_code: Optional[str] = None,
                 response_header_transformations: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations'] = None,
                 response_message: Optional[str] = None,
                 response_type: Optional[str] = None,
                 scopes: Optional[Sequence[str]] = None,
                 source_uri_details: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetails'] = None,
                 use_cookies_for_intermediate_steps: Optional[bool] = None,
                 use_cookies_for_session: Optional[bool] = None,
                 use_pkce: Optional[bool] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailsArgs' client_details: (Updatable) Client App Credential details.
        :param str fallback_redirect_path: (Updatable) The path to be used as fallback after OAuth2.
        :param str logout_path: (Updatable) The path to be used as logout.
        :param int max_expiry_duration_in_hours: (Updatable) The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: (Updatable) HTTP response code, can include context variables.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsArgs' response_header_transformations: (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: (Updatable) HTTP response message.
        :param str response_type: (Updatable) Response Type.
        :param Sequence[str] scopes: (Updatable) List of scopes.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailsArgs' source_uri_details: (Updatable) Auth endpoint details.
        :param bool use_cookies_for_intermediate_steps: (Updatable) Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: (Updatable) Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: (Updatable) Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "type", type)
        if client_details is not None:
            pulumi.set(__self__, "client_details", client_details)
        if fallback_redirect_path is not None:
            pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        if logout_path is not None:
            pulumi.set(__self__, "logout_path", logout_path)
        if max_expiry_duration_in_hours is not None:
            pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        if response_code is not None:
            pulumi.set(__self__, "response_code", response_code)
        if response_header_transformations is not None:
            pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        if response_message is not None:
            pulumi.set(__self__, "response_message", response_message)
        if response_type is not None:
            pulumi.set(__self__, "response_type", response_type)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if source_uri_details is not None:
            pulumi.set(__self__, "source_uri_details", source_uri_details)
        if use_cookies_for_intermediate_steps is not None:
            pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        if use_cookies_for_session is not None:
            pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        if use_pkce is not None:
            pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails']:
        """
        (Updatable) Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> Optional[str]:
        """
        (Updatable) The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> Optional[str]:
        """
        (Updatable) The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> Optional[str]:
        """
        (Updatable) HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations']:
        """
        (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> Optional[str]:
        """
        (Updatable) HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> Optional[str]:
        """
        (Updatable) Response Type.
        """
        return pulumi.get(self, "response_type")

    @property
    @pulumi.getter
    def scopes(self) -> Optional[Sequence[str]]:
        """
        (Updatable) List of scopes.
        """
        return pulumi.get(self, "scopes")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetails']:
        """
        (Updatable) Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretId":
            suggest = "client_secret_id"
        elif key == "clientSecretVersionNumber":
            suggest = "client_secret_version_number"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_id: Optional[str] = None,
                 client_secret_id: Optional[str] = None,
                 client_secret_version_number: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str client_id: (Updatable) Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: (Updatable) The version number of the client secret to use.
        """
        pulumi.set(__self__, "type", type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret_id is not None:
            pulumi.set(__self__, "client_secret_id", client_secret_id)
        if client_secret_version_number is not None:
            pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[str]:
        """
        (Updatable) Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> Optional[str]:
        """
        (Updatable) The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterHeaders":
            suggest = "filter_headers"
        elif key == "renameHeaders":
            suggest = "rename_headers"
        elif key == "setHeaders":
            suggest = "set_headers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeaders'] = None,
                 rename_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeaders'] = None,
                 set_headers: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeaders'] = None):
        """
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersArgs' filter_headers: (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersArgs' rename_headers: (Updatable) Rename HTTP headers as they pass through the gateway.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersArgs' set_headers: (Updatable) Set HTTP headers as they pass through the gateway.
        """
        if filter_headers is not None:
            pulumi.set(__self__, "filter_headers", filter_headers)
        if rename_headers is not None:
            pulumi.set(__self__, "rename_headers", rename_headers)
        if set_headers is not None:
            pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeaders']:
        """
        (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeaders']:
        """
        (Updatable) Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeaders']:
        """
        (Updatable) Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem']] = None,
                 type: Optional[str] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItemArgs'] items: (Updatable) The list of headers.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        if items is not None:
            pulumi.set(__self__, "items", items)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItem(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem']] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        if items is not None:
            pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        """
        :param str from_: (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> Optional[str]:
        """
        (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> Optional[str]:
        """
        (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeaders(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem']] = None):
        """
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        if items is not None:
            pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem']]:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ifExists":
            suggest = "if_exists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 if_exists: Optional[str] = None,
                 name: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param str if_exists: (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if if_exists is not None:
            pulumi.set(__self__, "if_exists", if_exists)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> Optional[str]:
        """
        (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetails(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalValidationPolicy":
            suggest = "additional_validation_policy"
        elif key == "clientDetails":
            suggest = "client_details"
        elif key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "maxCacheDurationInHours":
            suggest = "max_cache_duration_in_hours"
        elif key == "sourceUriDetails":
            suggest = "source_uri_details"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 additional_validation_policy: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy'] = None,
                 client_details: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails'] = None,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 keys: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey']] = None,
                 max_cache_duration_in_hours: Optional[int] = None,
                 source_uri_details: Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetails'] = None,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyArgs' additional_validation_policy: (Updatable) Additional JWT validation checks.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailsArgs' client_details: (Updatable) Client App Credential details.
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyArgs'] keys: (Updatable) The set of static public keys.
        :param int max_cache_duration_in_hours: (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        :param 'DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailsArgs' source_uri_details: (Updatable) Auth endpoint details.
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if additional_validation_policy is not None:
            pulumi.set(__self__, "additional_validation_policy", additional_validation_policy)
        if client_details is not None:
            pulumi.set(__self__, "client_details", client_details)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if keys is not None:
            pulumi.set(__self__, "keys", keys)
        if max_cache_duration_in_hours is not None:
            pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        if source_uri_details is not None:
            pulumi.set(__self__, "source_uri_details", source_uri_details)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="additionalValidationPolicy")
    def additional_validation_policy(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy']:
        """
        (Updatable) Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policy")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails']:
        """
        (Updatable) Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey']]:
        """
        (Updatable) The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> Optional[int]:
        """
        (Updatable) The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Optional['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetails']:
        """
        (Updatable) Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "verifyClaims":
            suggest = "verify_claims"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 audiences: Optional[Sequence[str]] = None,
                 issuers: Optional[Sequence[str]] = None,
                 verify_claims: Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim']] = None):
        """
        :param Sequence[str] audiences: (Updatable) The list of intended recipients for the token.
        :param Sequence[str] issuers: (Updatable) A list of parties that could have issued the token.
        :param Sequence['DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: (Updatable) A list of claims which should be validated to consider the token valid.
        """
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if issuers is not None:
            pulumi.set(__self__, "issuers", issuers)
        if verify_claims is not None:
            pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Optional[Sequence['outputs.DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim']]:
        """
        (Updatable) A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isRequired":
            suggest = "is_required"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaim.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_required: Optional[bool] = None,
                 key: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param bool is_required: (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[bool]:
        """
        (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretId":
            suggest = "client_secret_id"
        elif key == "clientSecretVersionNumber":
            suggest = "client_secret_version_number"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 client_id: Optional[str] = None,
                 client_secret_id: Optional[str] = None,
                 client_secret_version_number: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str client_id: (Updatable) Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: (Updatable) The version number of the client secret to use.
        """
        pulumi.set(__self__, "type", type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret_id is not None:
            pulumi.set(__self__, "client_secret_id", client_secret_id)
        if client_secret_version_number is not None:
            pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[str]:
        """
        (Updatable) Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> Optional[str]:
        """
        (Updatable) The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyOps":
            suggest = "key_ops"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 format: str,
                 alg: Optional[str] = None,
                 e: Optional[str] = None,
                 key: Optional[str] = None,
                 key_ops: Optional[Sequence[str]] = None,
                 kid: Optional[str] = None,
                 kty: Optional[str] = None,
                 n: Optional[str] = None,
                 use: Optional[str] = None):
        """
        :param str format: (Updatable) The format of the public key.
        :param str alg: (Updatable) The algorithm intended for use with this key.
        :param str e: (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: (Updatable) The operations for which this key is to be used.
        :param str kid: (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: (Updatable) The key type.
        :param str n: (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: (Updatable) The intended use of the public key.
        """
        pulumi.set(__self__, "format", format)
        if alg is not None:
            pulumi.set(__self__, "alg", alg)
        if e is not None:
            pulumi.set(__self__, "e", e)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if key_ops is not None:
            pulumi.set(__self__, "key_ops", key_ops)
        if kid is not None:
            pulumi.set(__self__, "kid", kid)
        if kty is not None:
            pulumi.set(__self__, "kty", kty)
        if n is not None:
            pulumi.set(__self__, "n", n)
        if use is not None:
            pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        (Updatable) The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def alg(self) -> Optional[str]:
        """
        (Updatable) The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> Optional[str]:
        """
        (Updatable) A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> Optional[str]:
        """
        (Updatable) The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> Optional[str]:
        """
        (Updatable) The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> Optional[str]:
        """
        (Updatable) The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetails(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str uri: (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        if uri is not None:
            pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> Optional[str]:
        """
        (Updatable) The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isRequired":
            suggest = "is_required"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaim.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_required: Optional[bool] = None,
                 key: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param bool is_required: (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[bool]:
        """
        (Updatable) Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isDefault":
            suggest = "is_default"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServerKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 expression: Optional[str] = None,
                 is_default: Optional[bool] = None,
                 type: Optional[str] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str expression: (Updatable) String describing the expression with wildcards.
        :param bool is_default: (Updatable) Information regarding whether this is the default branch.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "name", name)
        if expression is not None:
            pulumi.set(__self__, "expression", expression)
        if is_default is not None:
            pulumi.set(__self__, "is_default", is_default)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def expression(self) -> Optional[str]:
        """
        (Updatable) String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> Optional[bool]:
        """
        (Updatable) Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSource(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: (Updatable) String describing the context variable used as selector.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        (Updatable) String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesMutualTls(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedSans":
            suggest = "allowed_sans"
        elif key == "isVerifiedCertificateRequired":
            suggest = "is_verified_certificate_required"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesMutualTls. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesMutualTls.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesMutualTls.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_sans: Optional[Sequence[str]] = None,
                 is_verified_certificate_required: Optional[bool] = None):
        """
        :param Sequence[str] allowed_sans: (Updatable) Allowed list of CN or SAN which will be used for verification of certificate.
        :param bool is_verified_certificate_required: (Updatable) Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        if allowed_sans is not None:
            pulumi.set(__self__, "allowed_sans", allowed_sans)
        if is_verified_certificate_required is not None:
            pulumi.set(__self__, "is_verified_certificate_required", is_verified_certificate_required)

    @property
    @pulumi.getter(name="allowedSans")
    def allowed_sans(self) -> Optional[Sequence[str]]:
        """
        (Updatable) Allowed list of CN or SAN which will be used for verification of certificate.
        """
        return pulumi.get(self, "allowed_sans")

    @property
    @pulumi.getter(name="isVerifiedCertificateRequired")
    def is_verified_certificate_required(self) -> Optional[bool]:
        """
        (Updatable) Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "is_verified_certificate_required")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesRateLimiting(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "rateInRequestsPerSecond":
            suggest = "rate_in_requests_per_second"
        elif key == "rateKey":
            suggest = "rate_key"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesRateLimiting. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesRateLimiting.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesRateLimiting.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 rate_in_requests_per_second: int,
                 rate_key: str):
        """
        :param int rate_in_requests_per_second: (Updatable) The maximum number of requests per second to allow.
        :param str rate_key: (Updatable) The key used to group requests together.
        """
        pulumi.set(__self__, "rate_in_requests_per_second", rate_in_requests_per_second)
        pulumi.set(__self__, "rate_key", rate_key)

    @property
    @pulumi.getter(name="rateInRequestsPerSecond")
    def rate_in_requests_per_second(self) -> int:
        """
        (Updatable) The maximum number of requests per second to allow.
        """
        return pulumi.get(self, "rate_in_requests_per_second")

    @property
    @pulumi.getter(name="rateKey")
    def rate_key(self) -> str:
        """
        (Updatable) The key used to group requests together.
        """
        return pulumi.get(self, "rate_key")


@pulumi.output_type
class DeploymentSpecificationRequestPoliciesUsagePlans(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenLocations":
            suggest = "token_locations"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRequestPoliciesUsagePlans. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRequestPoliciesUsagePlans.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRequestPoliciesUsagePlans.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_locations: Sequence[str]):
        """
        :param Sequence[str] token_locations: (Updatable) A list of context variables specifying where API tokens may be located in a request. Example locations:
               * "request.headers[token]"
               * "request.query[token]"
               * "request.auth[Token]"
               * "request.path[TOKEN]"
        """
        pulumi.set(__self__, "token_locations", token_locations)

    @property
    @pulumi.getter(name="tokenLocations")
    def token_locations(self) -> Sequence[str]:
        """
        (Updatable) A list of context variables specifying where API tokens may be located in a request. Example locations:
        * "request.headers[token]"
        * "request.query[token]"
        * "request.auth[Token]"
        * "request.path[TOKEN]"
        """
        return pulumi.get(self, "token_locations")


@pulumi.output_type
class DeploymentSpecificationRoute(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "loggingPolicies":
            suggest = "logging_policies"
        elif key == "requestPolicies":
            suggest = "request_policies"
        elif key == "responsePolicies":
            suggest = "response_policies"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRoute. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRoute.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRoute.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 backend: 'outputs.DeploymentSpecificationRouteBackend',
                 path: str,
                 logging_policies: Optional['outputs.DeploymentSpecificationRouteLoggingPolicies'] = None,
                 methods: Optional[Sequence[str]] = None,
                 request_policies: Optional['outputs.DeploymentSpecificationRouteRequestPolicies'] = None,
                 response_policies: Optional['outputs.DeploymentSpecificationRouteResponsePolicies'] = None):
        """
        :param 'DeploymentSpecificationRouteBackendArgs' backend: (Updatable) The backend to forward requests to.
        :param str path: (Updatable) A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        :param 'DeploymentSpecificationRouteLoggingPoliciesArgs' logging_policies: (Updatable) Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence[str] methods: (Updatable) A list of allowed methods on this route.
        :param 'DeploymentSpecificationRouteRequestPoliciesArgs' request_policies: (Updatable) Behavior applied to any requests received by the API on this route.
        :param 'DeploymentSpecificationRouteResponsePoliciesArgs' response_policies: (Updatable) Behavior applied to any responses sent by the API for requests on this route.
        """
        pulumi.set(__self__, "backend", backend)
        pulumi.set(__self__, "path", path)
        if logging_policies is not None:
            pulumi.set(__self__, "logging_policies", logging_policies)
        if methods is not None:
            pulumi.set(__self__, "methods", methods)
        if request_policies is not None:
            pulumi.set(__self__, "request_policies", request_policies)
        if response_policies is not None:
            pulumi.set(__self__, "response_policies", response_policies)

    @property
    @pulumi.getter
    def backend(self) -> 'outputs.DeploymentSpecificationRouteBackend':
        """
        (Updatable) The backend to forward requests to.
        """
        return pulumi.get(self, "backend")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        (Updatable) A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Optional['outputs.DeploymentSpecificationRouteLoggingPolicies']:
        """
        (Updatable) Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter
    def methods(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of allowed methods on this route.
        """
        return pulumi.get(self, "methods")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPolicies']:
        """
        (Updatable) Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter(name="responsePolicies")
    def response_policies(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePolicies']:
        """
        (Updatable) Behavior applied to any responses sent by the API for requests on this route.
        """
        return pulumi.get(self, "response_policies")


@pulumi.output_type
class DeploymentSpecificationRouteBackend(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedPostLogoutUris":
            suggest = "allowed_post_logout_uris"
        elif key == "connectTimeoutInSeconds":
            suggest = "connect_timeout_in_seconds"
        elif key == "functionId":
            suggest = "function_id"
        elif key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "postLogoutState":
            suggest = "post_logout_state"
        elif key == "readTimeoutInSeconds":
            suggest = "read_timeout_in_seconds"
        elif key == "routingBackends":
            suggest = "routing_backends"
        elif key == "selectionSource":
            suggest = "selection_source"
        elif key == "sendTimeoutInSeconds":
            suggest = "send_timeout_in_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteBackend. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteBackend.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteBackend.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 allowed_post_logout_uris: Optional[Sequence[str]] = None,
                 body: Optional[str] = None,
                 connect_timeout_in_seconds: Optional[float] = None,
                 function_id: Optional[str] = None,
                 headers: Optional[Sequence['outputs.DeploymentSpecificationRouteBackendHeader']] = None,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 post_logout_state: Optional[str] = None,
                 read_timeout_in_seconds: Optional[float] = None,
                 routing_backends: Optional[Sequence['outputs.DeploymentSpecificationRouteBackendRoutingBackend']] = None,
                 selection_source: Optional['outputs.DeploymentSpecificationRouteBackendSelectionSource'] = None,
                 send_timeout_in_seconds: Optional[float] = None,
                 status: Optional[int] = None,
                 url: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param Sequence[str] allowed_post_logout_uris: (Updatable)
        :param str body: (Updatable) The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: (Updatable) Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param Sequence['DeploymentSpecificationRouteBackendHeaderArgs'] headers: (Updatable)
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param str post_logout_state: (Updatable) Defines a state that should be shared on redirecting to postLogout URL.
        :param float read_timeout_in_seconds: (Updatable) Defines a timeout for reading a response from the proxied server.
        :param Sequence['DeploymentSpecificationRouteBackendRoutingBackendArgs'] routing_backends: (Updatable) List of backends to chose from for Dynamic Routing.
        :param 'DeploymentSpecificationRouteBackendSelectionSourceArgs' selection_source: (Updatable) Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        :param float send_timeout_in_seconds: (Updatable) Defines a timeout for transmitting a request to the proxied server.
        :param int status: (Updatable) The status code of the stock response from the mock backend.
        :param str url: (Updatable)
        """
        pulumi.set(__self__, "type", type)
        if allowed_post_logout_uris is not None:
            pulumi.set(__self__, "allowed_post_logout_uris", allowed_post_logout_uris)
        if body is not None:
            pulumi.set(__self__, "body", body)
        if connect_timeout_in_seconds is not None:
            pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        if function_id is not None:
            pulumi.set(__self__, "function_id", function_id)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if post_logout_state is not None:
            pulumi.set(__self__, "post_logout_state", post_logout_state)
        if read_timeout_in_seconds is not None:
            pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        if routing_backends is not None:
            pulumi.set(__self__, "routing_backends", routing_backends)
        if selection_source is not None:
            pulumi.set(__self__, "selection_source", selection_source)
        if send_timeout_in_seconds is not None:
            pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="allowedPostLogoutUris")
    def allowed_post_logout_uris(self) -> Optional[Sequence[str]]:
        """
        (Updatable)
        """
        return pulumi.get(self, "allowed_post_logout_uris")

    @property
    @pulumi.getter
    def body(self) -> Optional[str]:
        """
        (Updatable) The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteBackendHeader']]:
        """
        (Updatable)
        """
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="postLogoutState")
    def post_logout_state(self) -> Optional[str]:
        """
        (Updatable) Defines a state that should be shared on redirecting to postLogout URL.
        """
        return pulumi.get(self, "post_logout_state")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="routingBackends")
    def routing_backends(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteBackendRoutingBackend']]:
        """
        (Updatable) List of backends to chose from for Dynamic Routing.
        """
        return pulumi.get(self, "routing_backends")

    @property
    @pulumi.getter(name="selectionSource")
    def selection_source(self) -> Optional['outputs.DeploymentSpecificationRouteBackendSelectionSource']:
        """
        (Updatable) Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_source")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> Optional[int]:
        """
        (Updatable) The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

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


@pulumi.output_type
class DeploymentSpecificationRouteBackendHeader(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: (Updatable) Value of the header.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        (Updatable) Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class DeploymentSpecificationRouteBackendRoutingBackend(dict):
    def __init__(__self__, *,
                 backend: Optional['outputs.DeploymentSpecificationRouteBackendRoutingBackendBackend'] = None,
                 key: Optional['outputs.DeploymentSpecificationRouteBackendRoutingBackendKey'] = None):
        """
        :param 'DeploymentSpecificationRouteBackendRoutingBackendBackendArgs' backend: (Updatable) The backend to forward requests to.
        :param 'DeploymentSpecificationRouteBackendRoutingBackendKeyArgs' key: (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        if backend is not None:
            pulumi.set(__self__, "backend", backend)
        if key is not None:
            pulumi.set(__self__, "key", key)

    @property
    @pulumi.getter
    def backend(self) -> Optional['outputs.DeploymentSpecificationRouteBackendRoutingBackendBackend']:
        """
        (Updatable) The backend to forward requests to.
        """
        return pulumi.get(self, "backend")

    @property
    @pulumi.getter
    def key(self) -> Optional['outputs.DeploymentSpecificationRouteBackendRoutingBackendKey']:
        """
        (Updatable) Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class DeploymentSpecificationRouteBackendRoutingBackendBackend(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectTimeoutInSeconds":
            suggest = "connect_timeout_in_seconds"
        elif key == "functionId":
            suggest = "function_id"
        elif key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "readTimeoutInSeconds":
            suggest = "read_timeout_in_seconds"
        elif key == "sendTimeoutInSeconds":
            suggest = "send_timeout_in_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteBackendRoutingBackendBackend. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteBackendRoutingBackendBackend.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteBackendRoutingBackendBackend.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 body: Optional[str] = None,
                 connect_timeout_in_seconds: Optional[float] = None,
                 function_id: Optional[str] = None,
                 headers: Optional[Sequence['outputs.DeploymentSpecificationRouteBackendRoutingBackendBackendHeader']] = None,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 read_timeout_in_seconds: Optional[float] = None,
                 send_timeout_in_seconds: Optional[float] = None,
                 status: Optional[int] = None,
                 url: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str body: (Updatable) The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: (Updatable) Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param Sequence['DeploymentSpecificationRouteBackendRoutingBackendBackendHeaderArgs'] headers: (Updatable)
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param float read_timeout_in_seconds: (Updatable) Defines a timeout for reading a response from the proxied server.
        :param float send_timeout_in_seconds: (Updatable) Defines a timeout for transmitting a request to the proxied server.
        :param int status: (Updatable) The status code of the stock response from the mock backend.
        :param str url: (Updatable)
        """
        pulumi.set(__self__, "type", type)
        if body is not None:
            pulumi.set(__self__, "body", body)
        if connect_timeout_in_seconds is not None:
            pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        if function_id is not None:
            pulumi.set(__self__, "function_id", function_id)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if read_timeout_in_seconds is not None:
            pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        if send_timeout_in_seconds is not None:
            pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def body(self) -> Optional[str]:
        """
        (Updatable) The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteBackendRoutingBackendBackendHeader']]:
        """
        (Updatable)
        """
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> Optional[float]:
        """
        (Updatable) Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> Optional[int]:
        """
        (Updatable) The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

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


@pulumi.output_type
class DeploymentSpecificationRouteBackendRoutingBackendBackendHeader(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: (Updatable) Value of the header.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        (Updatable) Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class DeploymentSpecificationRouteBackendRoutingBackendKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isDefault":
            suggest = "is_default"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteBackendRoutingBackendKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteBackendRoutingBackendKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteBackendRoutingBackendKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 type: str,
                 expression: Optional[str] = None,
                 is_default: Optional[bool] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str expression: (Updatable) String describing the expression with wildcards.
        :param bool is_default: (Updatable) Information regarding whether this is the default branch.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        if expression is not None:
            pulumi.set(__self__, "expression", expression)
        if is_default is not None:
            pulumi.set(__self__, "is_default", is_default)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def expression(self) -> Optional[str]:
        """
        (Updatable) String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> Optional[bool]:
        """
        (Updatable) Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class DeploymentSpecificationRouteBackendSelectionSource(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: (Updatable) String describing the context variable used as selector.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        (Updatable) String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRouteLoggingPolicies(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessLog":
            suggest = "access_log"
        elif key == "executionLog":
            suggest = "execution_log"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteLoggingPolicies. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteLoggingPolicies.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteLoggingPolicies.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_log: Optional['outputs.DeploymentSpecificationRouteLoggingPoliciesAccessLog'] = None,
                 execution_log: Optional['outputs.DeploymentSpecificationRouteLoggingPoliciesExecutionLog'] = None):
        """
        :param 'DeploymentSpecificationRouteLoggingPoliciesAccessLogArgs' access_log: (Updatable) Configures the logging policies for the access logs of an API Deployment.
        :param 'DeploymentSpecificationRouteLoggingPoliciesExecutionLogArgs' execution_log: (Updatable) Configures the logging policies for the execution logs of an API Deployment.
        """
        if access_log is not None:
            pulumi.set(__self__, "access_log", access_log)
        if execution_log is not None:
            pulumi.set(__self__, "execution_log", execution_log)

    @property
    @pulumi.getter(name="accessLog")
    def access_log(self) -> Optional['outputs.DeploymentSpecificationRouteLoggingPoliciesAccessLog']:
        """
        (Updatable) Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_log")

    @property
    @pulumi.getter(name="executionLog")
    def execution_log(self) -> Optional['outputs.DeploymentSpecificationRouteLoggingPoliciesExecutionLog']:
        """
        (Updatable) Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_log")


@pulumi.output_type
class DeploymentSpecificationRouteLoggingPoliciesAccessLog(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isEnabled":
            suggest = "is_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteLoggingPoliciesAccessLog. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteLoggingPoliciesAccessLog.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteLoggingPoliciesAccessLog.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_enabled: Optional[bool] = None):
        """
        :param bool is_enabled: (Updatable) Whether this policy is currently enabled.
        """
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class DeploymentSpecificationRouteLoggingPoliciesExecutionLog(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isEnabled":
            suggest = "is_enabled"
        elif key == "logLevel":
            suggest = "log_level"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteLoggingPoliciesExecutionLog. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteLoggingPoliciesExecutionLog.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteLoggingPoliciesExecutionLog.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 is_enabled: Optional[bool] = None,
                 log_level: Optional[str] = None):
        """
        :param bool is_enabled: (Updatable) Whether this policy is currently enabled.
        :param str log_level: (Updatable) Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if log_level is not None:
            pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> Optional[str]:
        """
        (Updatable) Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPolicies(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bodyValidation":
            suggest = "body_validation"
        elif key == "headerTransformations":
            suggest = "header_transformations"
        elif key == "headerValidations":
            suggest = "header_validations"
        elif key == "queryParameterTransformations":
            suggest = "query_parameter_transformations"
        elif key == "queryParameterValidations":
            suggest = "query_parameter_validations"
        elif key == "responseCacheLookup":
            suggest = "response_cache_lookup"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPolicies. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPolicies.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPolicies.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 authorization: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesAuthorization'] = None,
                 body_validation: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesBodyValidation'] = None,
                 cors: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesCors'] = None,
                 header_transformations: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformations'] = None,
                 header_validations: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderValidations'] = None,
                 query_parameter_transformations: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations'] = None,
                 query_parameter_validations: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations'] = None,
                 response_cache_lookup: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup'] = None):
        """
        :param 'DeploymentSpecificationRouteRequestPoliciesAuthorizationArgs' authorization: (Updatable) If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        :param 'DeploymentSpecificationRouteRequestPoliciesBodyValidationArgs' body_validation: (Updatable) Validate the payload body of the incoming API requests on a specific route.
        :param 'DeploymentSpecificationRouteRequestPoliciesCorsArgs' cors: (Updatable) Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param 'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsArgs' header_transformations: (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        :param 'DeploymentSpecificationRouteRequestPoliciesHeaderValidationsArgs' header_validations: (Updatable) Validate the HTTP headers on the incoming API requests on a specific route.
        :param 'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsArgs' query_parameter_transformations: (Updatable) A set of transformations to apply to query parameters that pass through the gateway.
        :param 'DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsArgs' query_parameter_validations: (Updatable) Validate the URL query parameters on the incoming API requests on a specific route.
        :param 'DeploymentSpecificationRouteRequestPoliciesResponseCacheLookupArgs' response_cache_lookup: (Updatable) Base policy for Response Cache lookup.
        """
        if authorization is not None:
            pulumi.set(__self__, "authorization", authorization)
        if body_validation is not None:
            pulumi.set(__self__, "body_validation", body_validation)
        if cors is not None:
            pulumi.set(__self__, "cors", cors)
        if header_transformations is not None:
            pulumi.set(__self__, "header_transformations", header_transformations)
        if header_validations is not None:
            pulumi.set(__self__, "header_validations", header_validations)
        if query_parameter_transformations is not None:
            pulumi.set(__self__, "query_parameter_transformations", query_parameter_transformations)
        if query_parameter_validations is not None:
            pulumi.set(__self__, "query_parameter_validations", query_parameter_validations)
        if response_cache_lookup is not None:
            pulumi.set(__self__, "response_cache_lookup", response_cache_lookup)

    @property
    @pulumi.getter
    def authorization(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesAuthorization']:
        """
        (Updatable) If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        """
        return pulumi.get(self, "authorization")

    @property
    @pulumi.getter(name="bodyValidation")
    def body_validation(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesBodyValidation']:
        """
        (Updatable) Validate the payload body of the incoming API requests on a specific route.
        """
        return pulumi.get(self, "body_validation")

    @property
    @pulumi.getter
    def cors(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesCors']:
        """
        (Updatable) Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformations']:
        """
        (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="headerValidations")
    def header_validations(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderValidations']:
        """
        (Updatable) Validate the HTTP headers on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "header_validations")

    @property
    @pulumi.getter(name="queryParameterTransformations")
    def query_parameter_transformations(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations']:
        """
        (Updatable) A set of transformations to apply to query parameters that pass through the gateway.
        """
        return pulumi.get(self, "query_parameter_transformations")

    @property
    @pulumi.getter(name="queryParameterValidations")
    def query_parameter_validations(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations']:
        """
        (Updatable) Validate the URL query parameters on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "query_parameter_validations")

    @property
    @pulumi.getter(name="responseCacheLookup")
    def response_cache_lookup(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup']:
        """
        (Updatable) Base policy for Response Cache lookup.
        """
        return pulumi.get(self, "response_cache_lookup")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesAuthorization(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedScopes":
            suggest = "allowed_scopes"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesAuthorization. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesAuthorization.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesAuthorization.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_scopes: Optional[Sequence[str]] = None,
                 type: Optional[str] = None):
        """
        :param Sequence[str] allowed_scopes: (Updatable) A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        if allowed_scopes is not None:
            pulumi.set(__self__, "allowed_scopes", allowed_scopes)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="allowedScopes")
    def allowed_scopes(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        """
        return pulumi.get(self, "allowed_scopes")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesBodyValidation(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "validationMode":
            suggest = "validation_mode"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesBodyValidation. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesBodyValidation.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesBodyValidation.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 contents: Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesBodyValidationContent']] = None,
                 required: Optional[bool] = None,
                 validation_mode: Optional[str] = None):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesBodyValidationContentArgs'] contents: (Updatable) The content of the request body.
        :param bool required: (Updatable) Determines if the parameter is required in the request.
        :param str validation_mode: (Updatable) Validation behavior mode.
               
               In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.
               
               In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.
               
               `DISABLED` type turns the validation off.
        """
        if contents is not None:
            pulumi.set(__self__, "contents", contents)
        if required is not None:
            pulumi.set(__self__, "required", required)
        if validation_mode is not None:
            pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def contents(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesBodyValidationContent']]:
        """
        (Updatable) The content of the request body.
        """
        return pulumi.get(self, "contents")

    @property
    @pulumi.getter
    def required(self) -> Optional[bool]:
        """
        (Updatable) Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> Optional[str]:
        """
        (Updatable) Validation behavior mode.

        In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.

        In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.

        `DISABLED` type turns the validation off.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesBodyValidationContent(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "mediaType":
            suggest = "media_type"
        elif key == "validationType":
            suggest = "validation_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesBodyValidationContent. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesBodyValidationContent.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesBodyValidationContent.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 media_type: str,
                 validation_type: str):
        """
        :param str media_type: (Updatable) The media_type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
               
               media_type ::= ( / (  "*" "/" "*" ) / ( type "/" "*" ) / ( type "/" subtype ) )
               
               For requests that match multiple media types, only the most specific media type is applicable. e.g. `text/plain` overrides `text/*`
        :param str validation_type: (Updatable) Validation type defines the content validation method.
               
               Make the validation to first parse the body as the respective format.
        """
        pulumi.set(__self__, "media_type", media_type)
        pulumi.set(__self__, "validation_type", validation_type)

    @property
    @pulumi.getter(name="mediaType")
    def media_type(self) -> str:
        """
        (Updatable) The media_type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema

        media_type ::= ( / (  "*" "/" "*" ) / ( type "/" "*" ) / ( type "/" subtype ) )

        For requests that match multiple media types, only the most specific media type is applicable. e.g. `text/plain` overrides `text/*`
        """
        return pulumi.get(self, "media_type")

    @property
    @pulumi.getter(name="validationType")
    def validation_type(self) -> str:
        """
        (Updatable) Validation type defines the content validation method.

        Make the validation to first parse the body as the respective format.
        """
        return pulumi.get(self, "validation_type")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesCors(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedOrigins":
            suggest = "allowed_origins"
        elif key == "allowedHeaders":
            suggest = "allowed_headers"
        elif key == "allowedMethods":
            suggest = "allowed_methods"
        elif key == "exposedHeaders":
            suggest = "exposed_headers"
        elif key == "isAllowCredentialsEnabled":
            suggest = "is_allow_credentials_enabled"
        elif key == "maxAgeInSeconds":
            suggest = "max_age_in_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesCors. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesCors.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesCors.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_origins: Sequence[str],
                 allowed_headers: Optional[Sequence[str]] = None,
                 allowed_methods: Optional[Sequence[str]] = None,
                 exposed_headers: Optional[Sequence[str]] = None,
                 is_allow_credentials_enabled: Optional[bool] = None,
                 max_age_in_seconds: Optional[int] = None):
        """
        :param Sequence[str] allowed_origins: (Updatable) The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] allowed_headers: (Updatable) The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: (Updatable) The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] exposed_headers: (Updatable) The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: (Updatable) Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: (Updatable) The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        if allowed_headers is not None:
            pulumi.set(__self__, "allowed_headers", allowed_headers)
        if allowed_methods is not None:
            pulumi.set(__self__, "allowed_methods", allowed_methods)
        if exposed_headers is not None:
            pulumi.set(__self__, "exposed_headers", exposed_headers)
        if is_allow_credentials_enabled is not None:
            pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        if max_age_in_seconds is not None:
            pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        (Updatable) The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Optional[Sequence[str]]:
        """
        (Updatable) The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> Optional[int]:
        """
        (Updatable) The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterHeaders":
            suggest = "filter_headers"
        elif key == "renameHeaders":
            suggest = "rename_headers"
        elif key == "setHeaders":
            suggest = "set_headers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesHeaderTransformations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_headers: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeaders'] = None,
                 rename_headers: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeaders'] = None,
                 set_headers: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeaders'] = None):
        """
        :param 'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersArgs' filter_headers: (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param 'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersArgs' rename_headers: (Updatable) Rename HTTP headers as they pass through the gateway.
        :param 'DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersArgs' set_headers: (Updatable) Set HTTP headers as they pass through the gateway.
        """
        if filter_headers is not None:
            pulumi.set(__self__, "filter_headers", filter_headers)
        if rename_headers is not None:
            pulumi.set(__self__, "rename_headers", rename_headers)
        if set_headers is not None:
            pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeaders']:
        """
        (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeaders']:
        """
        (Updatable) Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeaders']:
        """
        (Updatable) Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersItem'],
                 type: str):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersItemArgs'] items: (Updatable) The list of headers.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsFilterHeadersItem(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ifExists":
            suggest = "if_exists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 if_exists: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        :param str if_exists: (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if if_exists is not None:
            pulumi.set(__self__, "if_exists", if_exists)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> Optional[str]:
        """
        (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderValidations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "validationMode":
            suggest = "validation_mode"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesHeaderValidations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderValidations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesHeaderValidations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 headers: Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderValidationsHeader']] = None,
                 validation_mode: Optional[str] = None):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesHeaderValidationsHeaderArgs'] headers: (Updatable)
        :param str validation_mode: (Updatable) Validation behavior mode.
               
               In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.
               
               In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.
               
               `DISABLED` type turns the validation off.
        """
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if validation_mode is not None:
            pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def headers(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesHeaderValidationsHeader']]:
        """
        (Updatable)
        """
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> Optional[str]:
        """
        (Updatable) Validation behavior mode.

        In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.

        In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.

        `DISABLED` type turns the validation off.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesHeaderValidationsHeader(dict):
    def __init__(__self__, *,
                 name: str,
                 required: Optional[bool] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: (Updatable) Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        if required is not None:
            pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> Optional[bool]:
        """
        (Updatable) Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterQueryParameters":
            suggest = "filter_query_parameters"
        elif key == "renameQueryParameters":
            suggest = "rename_query_parameters"
        elif key == "setQueryParameters":
            suggest = "set_query_parameters"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_query_parameters: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParameters'] = None,
                 rename_query_parameters: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParameters'] = None,
                 set_query_parameters: Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParameters'] = None):
        """
        :param 'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersArgs' filter_query_parameters: (Updatable) Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        :param 'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersArgs' rename_query_parameters: (Updatable) Rename parameters on the query string as they pass through the gateway.
        :param 'DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersArgs' set_query_parameters: (Updatable) Set parameters on the query string as they pass through the gateway.
        """
        if filter_query_parameters is not None:
            pulumi.set(__self__, "filter_query_parameters", filter_query_parameters)
        if rename_query_parameters is not None:
            pulumi.set(__self__, "rename_query_parameters", rename_query_parameters)
        if set_query_parameters is not None:
            pulumi.set(__self__, "set_query_parameters", set_query_parameters)

    @property
    @pulumi.getter(name="filterQueryParameters")
    def filter_query_parameters(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParameters']:
        """
        (Updatable) Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_query_parameters")

    @property
    @pulumi.getter(name="renameQueryParameters")
    def rename_query_parameters(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParameters']:
        """
        (Updatable) Rename parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "rename_query_parameters")

    @property
    @pulumi.getter(name="setQueryParameters")
    def set_query_parameters(self) -> Optional['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParameters']:
        """
        (Updatable) Set parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "set_query_parameters")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParameters(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersItem'],
                 type: str):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersItemArgs'] items: (Updatable) The list of headers.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsFilterQueryParametersItem(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParameters(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsRenameQueryParametersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParameters(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ifExists":
            suggest = "if_exists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterTransformationsSetQueryParametersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 if_exists: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        :param str if_exists: (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if if_exists is not None:
            pulumi.set(__self__, "if_exists", if_exists)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> Optional[str]:
        """
        (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "validationMode":
            suggest = "validation_mode"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesQueryParameterValidations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 parameters: Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsParameter']] = None,
                 validation_mode: Optional[str] = None):
        """
        :param Sequence['DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsParameterArgs'] parameters: (Updatable)
        :param str validation_mode: (Updatable) Validation behavior mode.
               
               In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.
               
               In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.
               
               `DISABLED` type turns the validation off.
        """
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if validation_mode is not None:
            pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsParameter']]:
        """
        (Updatable)
        """
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> Optional[str]:
        """
        (Updatable) Validation behavior mode.

        In `ENFORCING` mode, upon a validation failure, the request will be rejected with a 4xx response and not sent to the backend.

        In `PERMISSIVE` mode, the result of the validation will be exposed as metrics while the request will follow the normal path.

        `DISABLED` type turns the validation off.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesQueryParameterValidationsParameter(dict):
    def __init__(__self__, *,
                 name: str,
                 required: Optional[bool] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: (Updatable) Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        if required is not None:
            pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> Optional[bool]:
        """
        (Updatable) Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cacheKeyAdditions":
            suggest = "cache_key_additions"
        elif key == "isEnabled":
            suggest = "is_enabled"
        elif key == "isPrivateCachingEnabled":
            suggest = "is_private_caching_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteRequestPoliciesResponseCacheLookup.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 cache_key_additions: Optional[Sequence[str]] = None,
                 is_enabled: Optional[bool] = None,
                 is_private_caching_enabled: Optional[bool] = None):
        """
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param Sequence[str] cache_key_additions: (Updatable) A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        :param bool is_enabled: (Updatable) Whether this policy is currently enabled.
        :param bool is_private_caching_enabled: (Updatable) Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
               
               When false, any request with an Authorization header will not be stored in the Response Cache.
               
               If using the CustomAuthenticationPolicy then the tokenHeader/tokenQueryParam are also subject to this check.
        """
        pulumi.set(__self__, "type", type)
        if cache_key_additions is not None:
            pulumi.set(__self__, "cache_key_additions", cache_key_additions)
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if is_private_caching_enabled is not None:
            pulumi.set(__self__, "is_private_caching_enabled", is_private_caching_enabled)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="cacheKeyAdditions")
    def cache_key_additions(self) -> Optional[Sequence[str]]:
        """
        (Updatable) A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        """
        return pulumi.get(self, "cache_key_additions")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        (Updatable) Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="isPrivateCachingEnabled")
    def is_private_caching_enabled(self) -> Optional[bool]:
        """
        (Updatable) Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.

        When false, any request with an Authorization header will not be stored in the Response Cache.

        If using the CustomAuthenticationPolicy then the tokenHeader/tokenQueryParam are also subject to this check.
        """
        return pulumi.get(self, "is_private_caching_enabled")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePolicies(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "headerTransformations":
            suggest = "header_transformations"
        elif key == "responseCacheStore":
            suggest = "response_cache_store"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteResponsePolicies. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteResponsePolicies.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteResponsePolicies.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 header_transformations: Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformations'] = None,
                 response_cache_store: Optional['outputs.DeploymentSpecificationRouteResponsePoliciesResponseCacheStore'] = None):
        """
        :param 'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsArgs' header_transformations: (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        :param 'DeploymentSpecificationRouteResponsePoliciesResponseCacheStoreArgs' response_cache_store: (Updatable) Base policy for how a response from a backend is cached in the Response Cache.
        """
        if header_transformations is not None:
            pulumi.set(__self__, "header_transformations", header_transformations)
        if response_cache_store is not None:
            pulumi.set(__self__, "response_cache_store", response_cache_store)

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformations']:
        """
        (Updatable) A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="responseCacheStore")
    def response_cache_store(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePoliciesResponseCacheStore']:
        """
        (Updatable) Base policy for how a response from a backend is cached in the Response Cache.
        """
        return pulumi.get(self, "response_cache_store")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformations(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterHeaders":
            suggest = "filter_headers"
        elif key == "renameHeaders":
            suggest = "rename_headers"
        elif key == "setHeaders":
            suggest = "set_headers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteResponsePoliciesHeaderTransformations. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformations.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformations.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_headers: Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeaders'] = None,
                 rename_headers: Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeaders'] = None,
                 set_headers: Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeaders'] = None):
        """
        :param 'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersArgs' filter_headers: (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param 'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersArgs' rename_headers: (Updatable) Rename HTTP headers as they pass through the gateway.
        :param 'DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersArgs' set_headers: (Updatable) Set HTTP headers as they pass through the gateway.
        """
        if filter_headers is not None:
            pulumi.set(__self__, "filter_headers", filter_headers)
        if rename_headers is not None:
            pulumi.set(__self__, "rename_headers", rename_headers)
        if set_headers is not None:
            pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeaders']:
        """
        (Updatable) Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeaders']:
        """
        (Updatable) Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Optional['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeaders']:
        """
        (Updatable) Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersItem'],
                 type: str):
        """
        :param Sequence['DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersItemArgs'] items: (Updatable) The list of headers.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsFilterHeadersItem(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsRenameHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        (Updatable) The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        (Updatable) The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeaders(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem']):
        """
        :param Sequence['DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItemArgs'] items: (Updatable) The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem']:
        """
        (Updatable) The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ifExists":
            suggest = "if_exists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteResponsePoliciesHeaderTransformationsSetHeadersItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 if_exists: Optional[str] = None):
        """
        :param str name: (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        :param str if_exists: (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if if_exists is not None:
            pulumi.set(__self__, "if_exists", if_exists)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        (Updatable) A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> Optional[str]:
        """
        (Updatable) If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")


@pulumi.output_type
class DeploymentSpecificationRouteResponsePoliciesResponseCacheStore(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "timeToLiveInSeconds":
            suggest = "time_to_live_in_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentSpecificationRouteResponsePoliciesResponseCacheStore. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentSpecificationRouteResponsePoliciesResponseCacheStore.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentSpecificationRouteResponsePoliciesResponseCacheStore.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 time_to_live_in_seconds: int,
                 type: str):
        """
        :param int time_to_live_in_seconds: (Updatable) Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        :param str type: (Updatable) Type of the Response Cache Store Policy.
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "time_to_live_in_seconds", time_to_live_in_seconds)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="timeToLiveInSeconds")
    def time_to_live_in_seconds(self) -> int:
        """
        (Updatable) Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        """
        return pulumi.get(self, "time_to_live_in_seconds")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache Store Policy.


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GatewayCaBundle(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "caBundleId":
            suggest = "ca_bundle_id"
        elif key == "certificateAuthorityId":
            suggest = "certificate_authority_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GatewayCaBundle. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GatewayCaBundle.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GatewayCaBundle.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 ca_bundle_id: Optional[str] = None,
                 certificate_authority_id: Optional[str] = None):
        """
        :param str type: (Updatable) Type of the Response Cache.
        :param str ca_bundle_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str certificate_authority_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        pulumi.set(__self__, "type", type)
        if ca_bundle_id is not None:
            pulumi.set(__self__, "ca_bundle_id", ca_bundle_id)
        if certificate_authority_id is not None:
            pulumi.set(__self__, "certificate_authority_id", certificate_authority_id)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="caBundleId")
    def ca_bundle_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "ca_bundle_id")

    @property
    @pulumi.getter(name="certificateAuthorityId")
    def certificate_authority_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "certificate_authority_id")


@pulumi.output_type
class GatewayIpAddress(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ipAddress":
            suggest = "ip_address"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GatewayIpAddress. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GatewayIpAddress.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GatewayIpAddress.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ip_address: Optional[str] = None):
        """
        :param str ip_address: An IP address.
        """
        if ip_address is not None:
            pulumi.set(__self__, "ip_address", ip_address)

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> Optional[str]:
        """
        An IP address.
        """
        return pulumi.get(self, "ip_address")


@pulumi.output_type
class GatewayResponseCacheDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authenticationSecretId":
            suggest = "authentication_secret_id"
        elif key == "authenticationSecretVersionNumber":
            suggest = "authentication_secret_version_number"
        elif key == "connectTimeoutInMs":
            suggest = "connect_timeout_in_ms"
        elif key == "isSslEnabled":
            suggest = "is_ssl_enabled"
        elif key == "isSslVerifyDisabled":
            suggest = "is_ssl_verify_disabled"
        elif key == "readTimeoutInMs":
            suggest = "read_timeout_in_ms"
        elif key == "sendTimeoutInMs":
            suggest = "send_timeout_in_ms"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GatewayResponseCacheDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GatewayResponseCacheDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GatewayResponseCacheDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: str,
                 authentication_secret_id: Optional[str] = None,
                 authentication_secret_version_number: Optional[str] = None,
                 connect_timeout_in_ms: Optional[int] = None,
                 is_ssl_enabled: Optional[bool] = None,
                 is_ssl_verify_disabled: Optional[bool] = None,
                 read_timeout_in_ms: Optional[int] = None,
                 send_timeout_in_ms: Optional[int] = None,
                 servers: Optional[Sequence['outputs.GatewayResponseCacheDetailsServer']] = None):
        """
        :param str type: (Updatable) Type of the Response Cache.
        :param str authentication_secret_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str authentication_secret_version_number: (Updatable) The version number of the authentication secret to use.
        :param int connect_timeout_in_ms: (Updatable) Defines the timeout for establishing a connection with the Response Cache.
        :param bool is_ssl_enabled: (Updatable) Defines if the connection should be over SSL.
        :param bool is_ssl_verify_disabled: (Updatable) Defines whether or not to uphold SSL verification.
        :param int read_timeout_in_ms: (Updatable) Defines the timeout for reading data from the Response Cache.
        :param int send_timeout_in_ms: (Updatable) Defines the timeout for transmitting data to the Response Cache.
        :param Sequence['GatewayResponseCacheDetailsServerArgs'] servers: (Updatable) The set of cache store members to connect to. At present only a single server is supported.
        """
        pulumi.set(__self__, "type", type)
        if authentication_secret_id is not None:
            pulumi.set(__self__, "authentication_secret_id", authentication_secret_id)
        if authentication_secret_version_number is not None:
            pulumi.set(__self__, "authentication_secret_version_number", authentication_secret_version_number)
        if connect_timeout_in_ms is not None:
            pulumi.set(__self__, "connect_timeout_in_ms", connect_timeout_in_ms)
        if is_ssl_enabled is not None:
            pulumi.set(__self__, "is_ssl_enabled", is_ssl_enabled)
        if is_ssl_verify_disabled is not None:
            pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        if read_timeout_in_ms is not None:
            pulumi.set(__self__, "read_timeout_in_ms", read_timeout_in_ms)
        if send_timeout_in_ms is not None:
            pulumi.set(__self__, "send_timeout_in_ms", send_timeout_in_ms)
        if servers is not None:
            pulumi.set(__self__, "servers", servers)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        (Updatable) Type of the Response Cache.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="authenticationSecretId")
    def authentication_secret_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "authentication_secret_id")

    @property
    @pulumi.getter(name="authenticationSecretVersionNumber")
    def authentication_secret_version_number(self) -> Optional[str]:
        """
        (Updatable) The version number of the authentication secret to use.
        """
        return pulumi.get(self, "authentication_secret_version_number")

    @property
    @pulumi.getter(name="connectTimeoutInMs")
    def connect_timeout_in_ms(self) -> Optional[int]:
        """
        (Updatable) Defines the timeout for establishing a connection with the Response Cache.
        """
        return pulumi.get(self, "connect_timeout_in_ms")

    @property
    @pulumi.getter(name="isSslEnabled")
    def is_ssl_enabled(self) -> Optional[bool]:
        """
        (Updatable) Defines if the connection should be over SSL.
        """
        return pulumi.get(self, "is_ssl_enabled")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> Optional[bool]:
        """
        (Updatable) Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInMs")
    def read_timeout_in_ms(self) -> Optional[int]:
        """
        (Updatable) Defines the timeout for reading data from the Response Cache.
        """
        return pulumi.get(self, "read_timeout_in_ms")

    @property
    @pulumi.getter(name="sendTimeoutInMs")
    def send_timeout_in_ms(self) -> Optional[int]:
        """
        (Updatable) Defines the timeout for transmitting data to the Response Cache.
        """
        return pulumi.get(self, "send_timeout_in_ms")

    @property
    @pulumi.getter
    def servers(self) -> Optional[Sequence['outputs.GatewayResponseCacheDetailsServer']]:
        """
        (Updatable) The set of cache store members to connect to. At present only a single server is supported.
        """
        return pulumi.get(self, "servers")


@pulumi.output_type
class GatewayResponseCacheDetailsServer(dict):
    def __init__(__self__, *,
                 host: Optional[str] = None,
                 port: Optional[int] = None):
        """
        :param str host: (Updatable) Hostname or IP address (IPv4 only) where the cache store is running.
        :param int port: (Updatable) The port the cache store is exposed on.
        """
        if host is not None:
            pulumi.set(__self__, "host", host)
        if port is not None:
            pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def host(self) -> Optional[str]:
        """
        (Updatable) Hostname or IP address (IPv4 only) where the cache store is running.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        (Updatable) The port the cache store is exposed on.
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class SubscriberClient(dict):
    def __init__(__self__, *,
                 name: str,
                 token: str):
        """
        :param str name: (Updatable) The name of the client. Must be unique within a subscriber.
        :param str token: (Updatable) The token for the client. Must be unique within a tenancy.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "token", token)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) The name of the client. Must be unique within a subscriber.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def token(self) -> str:
        """
        (Updatable) The token for the client. Must be unique within a tenancy.
        """
        return pulumi.get(self, "token")


@pulumi.output_type
class UsagePlanEntitlement(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "rateLimit":
            suggest = "rate_limit"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UsagePlanEntitlement. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UsagePlanEntitlement.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UsagePlanEntitlement.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 description: Optional[str] = None,
                 quota: Optional['outputs.UsagePlanEntitlementQuota'] = None,
                 rate_limit: Optional['outputs.UsagePlanEntitlementRateLimit'] = None,
                 targets: Optional[Sequence['outputs.UsagePlanEntitlementTarget']] = None):
        """
        :param str name: (Updatable) An entitlement name, unique within a usage plan.
        :param str description: (Updatable) A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        :param 'UsagePlanEntitlementQuotaArgs' quota: (Updatable) Quota policy for a usage plan.
        :param 'UsagePlanEntitlementRateLimitArgs' rate_limit: (Updatable) Rate-limiting policy for a usage plan.
        :param Sequence['UsagePlanEntitlementTargetArgs'] targets: (Updatable) A collection of targeted deployments that the entitlement will be applied to.
        """
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if quota is not None:
            pulumi.set(__self__, "quota", quota)
        if rate_limit is not None:
            pulumi.set(__self__, "rate_limit", rate_limit)
        if targets is not None:
            pulumi.set(__self__, "targets", targets)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Updatable) An entitlement name, unique within a usage plan.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        (Updatable) A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def quota(self) -> Optional['outputs.UsagePlanEntitlementQuota']:
        """
        (Updatable) Quota policy for a usage plan.
        """
        return pulumi.get(self, "quota")

    @property
    @pulumi.getter(name="rateLimit")
    def rate_limit(self) -> Optional['outputs.UsagePlanEntitlementRateLimit']:
        """
        (Updatable) Rate-limiting policy for a usage plan.
        """
        return pulumi.get(self, "rate_limit")

    @property
    @pulumi.getter
    def targets(self) -> Optional[Sequence['outputs.UsagePlanEntitlementTarget']]:
        """
        (Updatable) A collection of targeted deployments that the entitlement will be applied to.
        """
        return pulumi.get(self, "targets")


@pulumi.output_type
class UsagePlanEntitlementQuota(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "operationOnBreach":
            suggest = "operation_on_breach"
        elif key == "resetPolicy":
            suggest = "reset_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UsagePlanEntitlementQuota. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UsagePlanEntitlementQuota.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UsagePlanEntitlementQuota.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operation_on_breach: str,
                 reset_policy: str,
                 unit: str,
                 value: int):
        """
        :param str operation_on_breach: (Updatable) What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        :param str reset_policy: (Updatable) The policy that controls when quotas will reset. Example: `CALENDAR`
        :param str unit: (Updatable) The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: (Updatable) The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "operation_on_breach", operation_on_breach)
        pulumi.set(__self__, "reset_policy", reset_policy)
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="operationOnBreach")
    def operation_on_breach(self) -> str:
        """
        (Updatable) What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        """
        return pulumi.get(self, "operation_on_breach")

    @property
    @pulumi.getter(name="resetPolicy")
    def reset_policy(self) -> str:
        """
        (Updatable) The policy that controls when quotas will reset. Example: `CALENDAR`
        """
        return pulumi.get(self, "reset_policy")

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        (Updatable) The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        (Updatable) The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class UsagePlanEntitlementRateLimit(dict):
    def __init__(__self__, *,
                 unit: str,
                 value: int):
        """
        :param str unit: (Updatable) The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: (Updatable) The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        (Updatable) The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        (Updatable) The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class UsagePlanEntitlementTarget(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "deploymentId":
            suggest = "deployment_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UsagePlanEntitlementTarget. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UsagePlanEntitlementTarget.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UsagePlanEntitlementTarget.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 deployment_id: str):
        """
        :param str deployment_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        pulumi.set(__self__, "deployment_id", deployment_id)

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> str:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        return pulumi.get(self, "deployment_id")


@pulumi.output_type
class GetApiDeploymentSpecificationLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetApiDeploymentSpecificationLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetApiDeploymentSpecificationLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetApiDeploymentSpecificationLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetApiDeploymentSpecificationLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetApiDeploymentSpecificationLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetApiDeploymentSpecificationLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetApiDeploymentSpecificationLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authentications: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationResult'],
                 cors: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyCorResult'],
                 dynamic_authentications: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationResult'],
                 mutual_tls: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyMutualTlResult'],
                 rate_limitings: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyRateLimitingResult'],
                 usage_plans: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyUsagePlanResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationArgs'] authentications: Information on how to authenticate incoming requests.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationArgs'] dynamic_authentications: Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyMutualTlArgs'] mutual_tls: Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyRateLimitingArgs'] rate_limitings: Limit the number of requests that should be handled for the specified window using a specfic key.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyUsagePlanArgs'] usage_plans: Usage plan policies for this deployment
        """
        pulumi.set(__self__, "authentications", authentications)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "dynamic_authentications", dynamic_authentications)
        pulumi.set(__self__, "mutual_tls", mutual_tls)
        pulumi.set(__self__, "rate_limitings", rate_limitings)
        pulumi.set(__self__, "usage_plans", usage_plans)

    @property
    @pulumi.getter
    def authentications(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentications")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="dynamicAuthentications")
    def dynamic_authentications(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationResult']:
        """
        Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        """
        return pulumi.get(self, "dynamic_authentications")

    @property
    @pulumi.getter(name="mutualTls")
    def mutual_tls(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyMutualTlResult']:
        """
        Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "mutual_tls")

    @property
    @pulumi.getter(name="rateLimitings")
    def rate_limitings(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyRateLimitingResult']:
        """
        Limit the number of requests that should be handled for the specified window using a specfic key.
        """
        return pulumi.get(self, "rate_limitings")

    @property
    @pulumi.getter(name="usagePlans")
    def usage_plans(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyUsagePlanResult']:
        """
        Usage plan policies for this deployment
        """
        return pulumi.get(self, "usage_plans")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationResult(dict):
    def __init__(__self__, *,
                 authentication_servers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult'],
                 selection_sources: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerArgs'] authentication_servers: List of authentication servers to choose from during dynamic authentication.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        pulumi.set(__self__, "authentication_servers", authentication_servers)
        pulumi.set(__self__, "selection_sources", selection_sources)

    @property
    @pulumi.getter(name="authenticationServers")
    def authentication_servers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult']:
        """
        List of authentication servers to choose from during dynamic authentication.
        """
        return pulumi.get(self, "authentication_servers")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult(dict):
    def __init__(__self__, *,
                 authentication_server_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult'],
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailArgs'] authentication_server_details: Information on how to authenticate incoming requests.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "authentication_server_details", authentication_server_details)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter(name="authenticationServerDetails")
    def authentication_server_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentication_server_details")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyMutualTlResult(dict):
    def __init__(__self__, *,
                 allowed_sans: Sequence[str],
                 is_verified_certificate_required: bool):
        """
        :param Sequence[str] allowed_sans: Allowed list of CN or SAN which will be used for verification of certificate.
        :param bool is_verified_certificate_required: Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        pulumi.set(__self__, "allowed_sans", allowed_sans)
        pulumi.set(__self__, "is_verified_certificate_required", is_verified_certificate_required)

    @property
    @pulumi.getter(name="allowedSans")
    def allowed_sans(self) -> Sequence[str]:
        """
        Allowed list of CN or SAN which will be used for verification of certificate.
        """
        return pulumi.get(self, "allowed_sans")

    @property
    @pulumi.getter(name="isVerifiedCertificateRequired")
    def is_verified_certificate_required(self) -> bool:
        """
        Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "is_verified_certificate_required")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyRateLimitingResult(dict):
    def __init__(__self__, *,
                 rate_in_requests_per_second: int,
                 rate_key: str):
        """
        :param int rate_in_requests_per_second: The maximum number of requests per second to allow.
        :param str rate_key: The key used to group requests together.
        """
        pulumi.set(__self__, "rate_in_requests_per_second", rate_in_requests_per_second)
        pulumi.set(__self__, "rate_key", rate_key)

    @property
    @pulumi.getter(name="rateInRequestsPerSecond")
    def rate_in_requests_per_second(self) -> int:
        """
        The maximum number of requests per second to allow.
        """
        return pulumi.get(self, "rate_in_requests_per_second")

    @property
    @pulumi.getter(name="rateKey")
    def rate_key(self) -> str:
        """
        The key used to group requests together.
        """
        return pulumi.get(self, "rate_key")


@pulumi.output_type
class GetApiDeploymentSpecificationRequestPolicyUsagePlanResult(dict):
    def __init__(__self__, *,
                 token_locations: Sequence[str]):
        """
        :param Sequence[str] token_locations: A list of context variables specifying where API tokens may be located in a request. Example locations:
               * "request.headers[token]"
               * "request.query[token]"
               * "request.auth[Token]"
               * "request.path[TOKEN]"
        """
        pulumi.set(__self__, "token_locations", token_locations)

    @property
    @pulumi.getter(name="tokenLocations")
    def token_locations(self) -> Sequence[str]:
        """
        A list of context variables specifying where API tokens may be located in a request. Example locations:
        * "request.headers[token]"
        * "request.query[token]"
        * "request.auth[Token]"
        * "request.path[TOKEN]"
        """
        return pulumi.get(self, "token_locations")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendResult'],
                 logging_policies: Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyResult'],
                 methods: Sequence[str],
                 path: str,
                 request_policies: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyResult'],
                 response_policies: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetApiDeploymentSpecificationRouteLoggingPolicyArgs'] logging_policies: Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence[str] methods: A list of allowed methods on this route.
        :param str path: A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyArgs'] request_policies: Behavior applied to any requests received by the API on this route.
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyArgs'] response_policies: Behavior applied to any responses sent by the API for requests on this route.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "logging_policies", logging_policies)
        pulumi.set(__self__, "methods", methods)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "request_policies", request_policies)
        pulumi.set(__self__, "response_policies", response_policies)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyResult']:
        """
        Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter
    def methods(self) -> Sequence[str]:
        """
        A list of allowed methods on this route.
        """
        return pulumi.get(self, "methods")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyResult']:
        """
        Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter(name="responsePolicies")
    def response_policies(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyResult']:
        """
        Behavior applied to any responses sent by the API for requests on this route.
        """
        return pulumi.get(self, "response_policies")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendResult(dict):
    def __init__(__self__, *,
                 allowed_post_logout_uris: Sequence[str],
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 post_logout_state: str,
                 read_timeout_in_seconds: float,
                 routing_backends: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendResult'],
                 selection_sources: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendSelectionSourceResult'],
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param str post_logout_state: Defines a state that should be shared on redirecting to postLogout URL.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param Sequence['GetApiDeploymentSpecificationRouteBackendRoutingBackendArgs'] routing_backends: List of backends to chose from for Dynamic Routing.
        :param Sequence['GetApiDeploymentSpecificationRouteBackendSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_post_logout_uris", allowed_post_logout_uris)
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "post_logout_state", post_logout_state)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "routing_backends", routing_backends)
        pulumi.set(__self__, "selection_sources", selection_sources)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

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

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="postLogoutState")
    def post_logout_state(self) -> str:
        """
        Defines a state that should be shared on redirecting to postLogout URL.
        """
        return pulumi.get(self, "post_logout_state")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="routingBackends")
    def routing_backends(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendResult']:
        """
        List of backends to chose from for Dynamic Routing.
        """
        return pulumi.get(self, "routing_backends")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendRoutingBackendResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendResult'],
                 keys: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendKeyResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetApiDeploymentSpecificationRouteBackendRoutingBackendKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendResult(dict):
    def __init__(__self__, *,
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 read_timeout_in_seconds: float,
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendRoutingBackendKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteBackendSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetApiDeploymentSpecificationRouteLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authorizations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyAuthorizationResult'],
                 body_validations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationResult'],
                 cors: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyCorResult'],
                 header_transformations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult'],
                 header_validations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationResult'],
                 query_parameter_transformations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult'],
                 query_parameter_validations: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult'],
                 response_cache_lookups: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyAuthorizationArgs'] authorizations: If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationArgs'] body_validations: Validate the payload body of the incoming API requests on a specific route.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationArgs'] header_validations: Validate the HTTP headers on the incoming API requests on a specific route.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationArgs'] query_parameter_transformations: A set of transformations to apply to query parameters that pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationArgs'] query_parameter_validations: Validate the URL query parameters on the incoming API requests on a specific route.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyResponseCacheLookupArgs'] response_cache_lookups: Base policy for Response Cache lookup.
        """
        pulumi.set(__self__, "authorizations", authorizations)
        pulumi.set(__self__, "body_validations", body_validations)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "header_validations", header_validations)
        pulumi.set(__self__, "query_parameter_transformations", query_parameter_transformations)
        pulumi.set(__self__, "query_parameter_validations", query_parameter_validations)
        pulumi.set(__self__, "response_cache_lookups", response_cache_lookups)

    @property
    @pulumi.getter
    def authorizations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyAuthorizationResult']:
        """
        If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        """
        return pulumi.get(self, "authorizations")

    @property
    @pulumi.getter(name="bodyValidations")
    def body_validations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationResult']:
        """
        Validate the payload body of the incoming API requests on a specific route.
        """
        return pulumi.get(self, "body_validations")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="headerValidations")
    def header_validations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationResult']:
        """
        Validate the HTTP headers on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "header_validations")

    @property
    @pulumi.getter(name="queryParameterTransformations")
    def query_parameter_transformations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult']:
        """
        A set of transformations to apply to query parameters that pass through the gateway.
        """
        return pulumi.get(self, "query_parameter_transformations")

    @property
    @pulumi.getter(name="queryParameterValidations")
    def query_parameter_validations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult']:
        """
        Validate the URL query parameters on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "query_parameter_validations")

    @property
    @pulumi.getter(name="responseCacheLookups")
    def response_cache_lookups(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult']:
        """
        Base policy for Response Cache lookup.
        """
        return pulumi.get(self, "response_cache_lookups")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyAuthorizationResult(dict):
    def __init__(__self__, *,
                 allowed_scopes: Sequence[str],
                 type: str):
        """
        :param Sequence[str] allowed_scopes: A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_scopes", allowed_scopes)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="allowedScopes")
    def allowed_scopes(self) -> Sequence[str]:
        """
        A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        """
        return pulumi.get(self, "allowed_scopes")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationResult(dict):
    def __init__(__self__, *,
                 contents: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult'],
                 required: bool,
                 validation_mode: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationContentArgs'] contents: The content of the request body.
        :param bool required: Determines if the parameter is required in the request.
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "required", required)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def contents(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult']:
        """
        The content of the request body.
        """
        return pulumi.get(self, "contents")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult(dict):
    def __init__(__self__, *,
                 media_type: str,
                 validation_type: str):
        """
        :param str media_type: The media type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        :param str validation_type: Validation type defines the content validation method.
        """
        pulumi.set(__self__, "media_type", media_type)
        pulumi.set(__self__, "validation_type", validation_type)

    @property
    @pulumi.getter(name="mediaType")
    def media_type(self) -> str:
        """
        The media type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        """
        return pulumi.get(self, "media_type")

    @property
    @pulumi.getter(name="validationType")
    def validation_type(self) -> str:
        """
        Validation type defines the content validation method.
        """
        return pulumi.get(self, "validation_type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationResult(dict):
    def __init__(__self__, *,
                 headers: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult(dict):
    def __init__(__self__, *,
                 filter_query_parameters: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult'],
                 rename_query_parameters: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult'],
                 set_query_parameters: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterArgs'] filter_query_parameters: Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterArgs'] rename_query_parameters: Rename parameters on the query string as they pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterArgs'] set_query_parameters: Set parameters on the query string as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_query_parameters", filter_query_parameters)
        pulumi.set(__self__, "rename_query_parameters", rename_query_parameters)
        pulumi.set(__self__, "set_query_parameters", set_query_parameters)

    @property
    @pulumi.getter(name="filterQueryParameters")
    def filter_query_parameters(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult']:
        """
        Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_query_parameters")

    @property
    @pulumi.getter(name="renameQueryParameters")
    def rename_query_parameters(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult']:
        """
        Rename parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "rename_query_parameters")

    @property
    @pulumi.getter(name="setQueryParameters")
    def set_query_parameters(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']:
        """
        Set parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "set_query_parameters")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult'],
                 type: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult(dict):
    def __init__(__self__, *,
                 parameters: Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def parameters(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult']:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult(dict):
    def __init__(__self__, *,
                 cache_key_additions: Sequence[str],
                 is_enabled: bool,
                 is_private_caching_enabled: bool,
                 type: str):
        """
        :param Sequence[str] cache_key_additions: A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        :param bool is_enabled: Whether this policy is currently enabled.
        :param bool is_private_caching_enabled: Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "cache_key_additions", cache_key_additions)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "is_private_caching_enabled", is_private_caching_enabled)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="cacheKeyAdditions")
    def cache_key_additions(self) -> Sequence[str]:
        """
        A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        """
        return pulumi.get(self, "cache_key_additions")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="isPrivateCachingEnabled")
    def is_private_caching_enabled(self) -> bool:
        """
        Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        """
        return pulumi.get(self, "is_private_caching_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyResult(dict):
    def __init__(__self__, *,
                 header_transformations: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult'],
                 response_cache_stores: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyResponseCacheStoreArgs'] response_cache_stores: Base policy for how a response from a backend is cached in the Response Cache.
        """
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "response_cache_stores", response_cache_stores)

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="responseCacheStores")
    def response_cache_stores(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult']:
        """
        Base policy for how a response from a backend is cached in the Response Cache.
        """
        return pulumi.get(self, "response_cache_stores")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetApiDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult(dict):
    def __init__(__self__, *,
                 time_to_live_in_seconds: int,
                 type: str):
        """
        :param int time_to_live_in_seconds: Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "time_to_live_in_seconds", time_to_live_in_seconds)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="timeToLiveInSeconds")
    def time_to_live_in_seconds(self) -> int:
        """
        Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        """
        return pulumi.get(self, "time_to_live_in_seconds")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApiValidationResultResult(dict):
    def __init__(__self__, *,
                 name: str,
                 result: str):
        """
        :param str name: Name of the validation.
        :param str result: Result of the validation.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "result", result)

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

    @property
    @pulumi.getter
    def result(self) -> str:
        """
        Result of the validation.
        """
        return pulumi.get(self, "result")


@pulumi.output_type
class GetApiValidationValidationResult(dict):
    def __init__(__self__, *,
                 details: Sequence['outputs.GetApiValidationValidationDetailResult'],
                 name: str,
                 result: str):
        """
        :param Sequence['GetApiValidationValidationDetailArgs'] details: Details of validation.
        :param str name: Name of the validation.
        :param str result: Result of the validation.
        """
        pulumi.set(__self__, "details", details)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "result", result)

    @property
    @pulumi.getter
    def details(self) -> Sequence['outputs.GetApiValidationValidationDetailResult']:
        """
        Details of validation.
        """
        return pulumi.get(self, "details")

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

    @property
    @pulumi.getter
    def result(self) -> str:
        """
        Result of the validation.
        """
        return pulumi.get(self, "result")


@pulumi.output_type
class GetApiValidationValidationDetailResult(dict):
    def __init__(__self__, *,
                 msg: str,
                 severity: str,
                 srcs: Sequence['outputs.GetApiValidationValidationDetailSrcResult']):
        """
        :param str msg: Description of the warning/error.
        :param str severity: Severity of the issue.
        :param Sequence['GetApiValidationValidationDetailSrcArgs'] srcs: Position of the issue in the specification file (line, column).
        """
        pulumi.set(__self__, "msg", msg)
        pulumi.set(__self__, "severity", severity)
        pulumi.set(__self__, "srcs", srcs)

    @property
    @pulumi.getter
    def msg(self) -> str:
        """
        Description of the warning/error.
        """
        return pulumi.get(self, "msg")

    @property
    @pulumi.getter
    def severity(self) -> str:
        """
        Severity of the issue.
        """
        return pulumi.get(self, "severity")

    @property
    @pulumi.getter
    def srcs(self) -> Sequence['outputs.GetApiValidationValidationDetailSrcResult']:
        """
        Position of the issue in the specification file (line, column).
        """
        return pulumi.get(self, "srcs")


@pulumi.output_type
class GetApiValidationValidationDetailSrcResult(dict):
    def __init__(__self__, *,
                 items: Sequence[Any]):
        pulumi.set(__self__, "items", items)

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


@pulumi.output_type
class GetApisApiCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetApisApiCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetApisApiCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetApisApiCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 content: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 freeform_tags: Mapping[str, Any],
                 id: str,
                 lifecycle_details: str,
                 specification_type: str,
                 state: str,
                 time_created: str,
                 time_updated: str,
                 validation_results: Sequence['outputs.GetApisApiCollectionItemValidationResultResult']):
        """
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str lifecycle_details: A message describing the current lifecycleState in more detail. For ACTIVE state it describes if the document has been validated and the possible values are:
               * 'New' for just updated API Specifications
               * 'Validating' for a document which is being validated.
               * 'Valid' the document has been validated without any errors or warnings
               * 'Warning' the document has been validated and contains warnings
               * 'Error' the document has been validated and contains errors
               * 'Failed' the document validation failed
               * 'Canceled' the document validation was canceled
        :param str specification_type: Type of API Specification file.
        :param str state: A filter to return only resources that match the given lifecycle state.  Example: `ACTIVE`
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        :param Sequence['GetApisApiCollectionItemValidationResultArgs'] validation_results: Status of each feature available from the API.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "content", content)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "specification_type", specification_type)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)
        pulumi.set(__self__, "validation_results", validation_results)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

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

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current lifecycleState in more detail. For ACTIVE state it describes if the document has been validated and the possible values are:
        * 'New' for just updated API Specifications
        * 'Validating' for a document which is being validated.
        * 'Valid' the document has been validated without any errors or warnings
        * 'Warning' the document has been validated and contains warnings
        * 'Error' the document has been validated and contains errors
        * 'Failed' the document validation failed
        * 'Canceled' the document validation was canceled
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="specificationType")
    def specification_type(self) -> str:
        """
        Type of API Specification file.
        """
        return pulumi.get(self, "specification_type")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state.  Example: `ACTIVE`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")

    @property
    @pulumi.getter(name="validationResults")
    def validation_results(self) -> Sequence['outputs.GetApisApiCollectionItemValidationResultResult']:
        """
        Status of each feature available from the API.
        """
        return pulumi.get(self, "validation_results")


@pulumi.output_type
class GetApisApiCollectionItemValidationResultResult(dict):
    def __init__(__self__, *,
                 name: str,
                 result: str):
        """
        :param str name: Name of the validation.
        :param str result: Result of the validation.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "result", result)

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

    @property
    @pulumi.getter
    def result(self) -> str:
        """
        Result of the validation.
        """
        return pulumi.get(self, "result")


@pulumi.output_type
class GetApisFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: Name of the validation.
        """
        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:
        """
        Name of the validation.
        """
        return pulumi.get(self, "name")

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

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


@pulumi.output_type
class GetCertificatesCertificateCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetCertificatesCertificateCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetCertificatesCertificateCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetCertificatesCertificateCollectionItemResult(dict):
    def __init__(__self__, *,
                 certificate: str,
                 compartment_id: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 freeform_tags: Mapping[str, Any],
                 id: str,
                 intermediate_certificates: str,
                 lifecycle_details: str,
                 private_key: str,
                 state: str,
                 subject_names: Sequence[str],
                 time_created: str,
                 time_not_valid_after: str,
                 time_updated: str):
        """
        :param str certificate: The data of the leaf certificate in pem format.
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str intermediate_certificates: The intermediate certificate data associated with the certificate in pem format.
        :param str lifecycle_details: A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        :param str state: A filter to return only resources that match the given lifecycle state.  Example: `ACTIVE` or `DELETED`
        :param Sequence[str] subject_names: The entity to be secured by the certificate and additional host names.
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_not_valid_after: The date and time the certificate will expire.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        pulumi.set(__self__, "certificate", certificate)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "intermediate_certificates", intermediate_certificates)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "private_key", private_key)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "subject_names", subject_names)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_not_valid_after", time_not_valid_after)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter
    def certificate(self) -> str:
        """
        The data of the leaf certificate in pem format.
        """
        return pulumi.get(self, "certificate")

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="intermediateCertificates")
    def intermediate_certificates(self) -> str:
        """
        The intermediate certificate data associated with the certificate in pem format.
        """
        return pulumi.get(self, "intermediate_certificates")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        """
        return pulumi.get(self, "lifecycle_details")

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

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state.  Example: `ACTIVE` or `DELETED`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="subjectNames")
    def subject_names(self) -> Sequence[str]:
        """
        The entity to be secured by the certificate and additional host names.
        """
        return pulumi.get(self, "subject_names")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeNotValidAfter")
    def time_not_valid_after(self) -> str:
        """
        The date and time the certificate will expire.
        """
        return pulumi.get(self, "time_not_valid_after")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetCertificatesFilterResult(dict):
    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")

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

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


@pulumi.output_type
class GetDeploymentSpecificationResult(dict):
    def __init__(__self__, *,
                 logging_policies: Sequence['outputs.GetDeploymentSpecificationLoggingPolicyResult'],
                 request_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyResult'],
                 routes: Sequence['outputs.GetDeploymentSpecificationRouteResult']):
        """
        :param Sequence['GetDeploymentSpecificationLoggingPolicyArgs'] logging_policies: Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence['GetDeploymentSpecificationRequestPolicyArgs'] request_policies: Behavior applied to any requests received by the API on this route.
        :param Sequence['GetDeploymentSpecificationRouteArgs'] routes: A list of routes that this API exposes.
        """
        pulumi.set(__self__, "logging_policies", logging_policies)
        pulumi.set(__self__, "request_policies", request_policies)
        pulumi.set(__self__, "routes", routes)

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Sequence['outputs.GetDeploymentSpecificationLoggingPolicyResult']:
        """
        Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyResult']:
        """
        Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter
    def routes(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResult']:
        """
        A list of routes that this API exposes.
        """
        return pulumi.get(self, "routes")


@pulumi.output_type
class GetDeploymentSpecificationLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetDeploymentSpecificationLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetDeploymentSpecificationLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetDeploymentSpecificationLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetDeploymentSpecificationLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetDeploymentSpecificationLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetDeploymentSpecificationLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetDeploymentSpecificationLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetDeploymentSpecificationLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authentications: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationResult'],
                 cors: Sequence['outputs.GetDeploymentSpecificationRequestPolicyCorResult'],
                 dynamic_authentications: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationResult'],
                 mutual_tls: Sequence['outputs.GetDeploymentSpecificationRequestPolicyMutualTlResult'],
                 rate_limitings: Sequence['outputs.GetDeploymentSpecificationRequestPolicyRateLimitingResult'],
                 usage_plans: Sequence['outputs.GetDeploymentSpecificationRequestPolicyUsagePlanResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationArgs'] authentications: Information on how to authenticate incoming requests.
        :param Sequence['GetDeploymentSpecificationRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationArgs'] dynamic_authentications: Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        :param Sequence['GetDeploymentSpecificationRequestPolicyMutualTlArgs'] mutual_tls: Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        :param Sequence['GetDeploymentSpecificationRequestPolicyRateLimitingArgs'] rate_limitings: Limit the number of requests that should be handled for the specified window using a specfic key.
        :param Sequence['GetDeploymentSpecificationRequestPolicyUsagePlanArgs'] usage_plans: Usage plan policies for this deployment
        """
        pulumi.set(__self__, "authentications", authentications)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "dynamic_authentications", dynamic_authentications)
        pulumi.set(__self__, "mutual_tls", mutual_tls)
        pulumi.set(__self__, "rate_limitings", rate_limitings)
        pulumi.set(__self__, "usage_plans", usage_plans)

    @property
    @pulumi.getter
    def authentications(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentications")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="dynamicAuthentications")
    def dynamic_authentications(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationResult']:
        """
        Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        """
        return pulumi.get(self, "dynamic_authentications")

    @property
    @pulumi.getter(name="mutualTls")
    def mutual_tls(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyMutualTlResult']:
        """
        Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "mutual_tls")

    @property
    @pulumi.getter(name="rateLimitings")
    def rate_limitings(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyRateLimitingResult']:
        """
        Limit the number of requests that should be handled for the specified window using a specfic key.
        """
        return pulumi.get(self, "rate_limitings")

    @property
    @pulumi.getter(name="usagePlans")
    def usage_plans(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyUsagePlanResult']:
        """
        Usage plan policies for this deployment
        """
        return pulumi.get(self, "usage_plans")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyAuthenticationVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationResult(dict):
    def __init__(__self__, *,
                 authentication_servers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult'],
                 selection_sources: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerArgs'] authentication_servers: List of authentication servers to choose from during dynamic authentication.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        pulumi.set(__self__, "authentication_servers", authentication_servers)
        pulumi.set(__self__, "selection_sources", selection_sources)

    @property
    @pulumi.getter(name="authenticationServers")
    def authentication_servers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult']:
        """
        List of authentication servers to choose from during dynamic authentication.
        """
        return pulumi.get(self, "authentication_servers")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult(dict):
    def __init__(__self__, *,
                 authentication_server_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult'],
                 keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailArgs'] authentication_server_details: Information on how to authenticate incoming requests.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "authentication_server_details", authentication_server_details)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter(name="authenticationServerDetails")
    def authentication_server_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentication_server_details")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyMutualTlResult(dict):
    def __init__(__self__, *,
                 allowed_sans: Sequence[str],
                 is_verified_certificate_required: bool):
        """
        :param Sequence[str] allowed_sans: Allowed list of CN or SAN which will be used for verification of certificate.
        :param bool is_verified_certificate_required: Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        pulumi.set(__self__, "allowed_sans", allowed_sans)
        pulumi.set(__self__, "is_verified_certificate_required", is_verified_certificate_required)

    @property
    @pulumi.getter(name="allowedSans")
    def allowed_sans(self) -> Sequence[str]:
        """
        Allowed list of CN or SAN which will be used for verification of certificate.
        """
        return pulumi.get(self, "allowed_sans")

    @property
    @pulumi.getter(name="isVerifiedCertificateRequired")
    def is_verified_certificate_required(self) -> bool:
        """
        Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "is_verified_certificate_required")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyRateLimitingResult(dict):
    def __init__(__self__, *,
                 rate_in_requests_per_second: int,
                 rate_key: str):
        """
        :param int rate_in_requests_per_second: The maximum number of requests per second to allow.
        :param str rate_key: The key used to group requests together.
        """
        pulumi.set(__self__, "rate_in_requests_per_second", rate_in_requests_per_second)
        pulumi.set(__self__, "rate_key", rate_key)

    @property
    @pulumi.getter(name="rateInRequestsPerSecond")
    def rate_in_requests_per_second(self) -> int:
        """
        The maximum number of requests per second to allow.
        """
        return pulumi.get(self, "rate_in_requests_per_second")

    @property
    @pulumi.getter(name="rateKey")
    def rate_key(self) -> str:
        """
        The key used to group requests together.
        """
        return pulumi.get(self, "rate_key")


@pulumi.output_type
class GetDeploymentSpecificationRequestPolicyUsagePlanResult(dict):
    def __init__(__self__, *,
                 token_locations: Sequence[str]):
        """
        :param Sequence[str] token_locations: A list of context variables specifying where API tokens may be located in a request. Example locations:
               * "request.headers[token]"
               * "request.query[token]"
               * "request.auth[Token]"
               * "request.path[TOKEN]"
        """
        pulumi.set(__self__, "token_locations", token_locations)

    @property
    @pulumi.getter(name="tokenLocations")
    def token_locations(self) -> Sequence[str]:
        """
        A list of context variables specifying where API tokens may be located in a request. Example locations:
        * "request.headers[token]"
        * "request.query[token]"
        * "request.auth[Token]"
        * "request.path[TOKEN]"
        """
        return pulumi.get(self, "token_locations")


@pulumi.output_type
class GetDeploymentSpecificationRouteResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetDeploymentSpecificationRouteBackendResult'],
                 logging_policies: Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyResult'],
                 methods: Sequence[str],
                 path: str,
                 request_policies: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyResult'],
                 response_policies: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetDeploymentSpecificationRouteLoggingPolicyArgs'] logging_policies: Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence[str] methods: A list of allowed methods on this route.
        :param str path: A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyArgs'] request_policies: Behavior applied to any requests received by the API on this route.
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyArgs'] response_policies: Behavior applied to any responses sent by the API for requests on this route.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "logging_policies", logging_policies)
        pulumi.set(__self__, "methods", methods)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "request_policies", request_policies)
        pulumi.set(__self__, "response_policies", response_policies)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyResult']:
        """
        Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter
    def methods(self) -> Sequence[str]:
        """
        A list of allowed methods on this route.
        """
        return pulumi.get(self, "methods")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyResult']:
        """
        Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter(name="responsePolicies")
    def response_policies(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyResult']:
        """
        Behavior applied to any responses sent by the API for requests on this route.
        """
        return pulumi.get(self, "response_policies")


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendResult(dict):
    def __init__(__self__, *,
                 allowed_post_logout_uris: Sequence[str],
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetDeploymentSpecificationRouteBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 post_logout_state: str,
                 read_timeout_in_seconds: float,
                 routing_backends: Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendResult'],
                 selection_sources: Sequence['outputs.GetDeploymentSpecificationRouteBackendSelectionSourceResult'],
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param str post_logout_state: Defines a state that should be shared on redirecting to postLogout URL.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param Sequence['GetDeploymentSpecificationRouteBackendRoutingBackendArgs'] routing_backends: List of backends to chose from for Dynamic Routing.
        :param Sequence['GetDeploymentSpecificationRouteBackendSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_post_logout_uris", allowed_post_logout_uris)
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "post_logout_state", post_logout_state)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "routing_backends", routing_backends)
        pulumi.set(__self__, "selection_sources", selection_sources)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

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

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="postLogoutState")
    def post_logout_state(self) -> str:
        """
        Defines a state that should be shared on redirecting to postLogout URL.
        """
        return pulumi.get(self, "post_logout_state")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="routingBackends")
    def routing_backends(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendResult']:
        """
        List of backends to chose from for Dynamic Routing.
        """
        return pulumi.get(self, "routing_backends")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendRoutingBackendResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendBackendResult'],
                 keys: Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendKeyResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteBackendRoutingBackendBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetDeploymentSpecificationRouteBackendRoutingBackendKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendRoutingBackendBackendResult(dict):
    def __init__(__self__, *,
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 read_timeout_in_seconds: float,
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendRoutingBackendBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendRoutingBackendKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRouteBackendSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetDeploymentSpecificationRouteLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetDeploymentSpecificationRouteLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetDeploymentSpecificationRouteLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetDeploymentSpecificationRouteLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authorizations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyAuthorizationResult'],
                 body_validations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyBodyValidationResult'],
                 cors: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyCorResult'],
                 header_transformations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult'],
                 header_validations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderValidationResult'],
                 query_parameter_transformations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult'],
                 query_parameter_validations: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult'],
                 response_cache_lookups: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyAuthorizationArgs'] authorizations: If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyBodyValidationArgs'] body_validations: Validate the payload body of the incoming API requests on a specific route.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderValidationArgs'] header_validations: Validate the HTTP headers on the incoming API requests on a specific route.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationArgs'] query_parameter_transformations: A set of transformations to apply to query parameters that pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationArgs'] query_parameter_validations: Validate the URL query parameters on the incoming API requests on a specific route.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyResponseCacheLookupArgs'] response_cache_lookups: Base policy for Response Cache lookup.
        """
        pulumi.set(__self__, "authorizations", authorizations)
        pulumi.set(__self__, "body_validations", body_validations)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "header_validations", header_validations)
        pulumi.set(__self__, "query_parameter_transformations", query_parameter_transformations)
        pulumi.set(__self__, "query_parameter_validations", query_parameter_validations)
        pulumi.set(__self__, "response_cache_lookups", response_cache_lookups)

    @property
    @pulumi.getter
    def authorizations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyAuthorizationResult']:
        """
        If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        """
        return pulumi.get(self, "authorizations")

    @property
    @pulumi.getter(name="bodyValidations")
    def body_validations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyBodyValidationResult']:
        """
        Validate the payload body of the incoming API requests on a specific route.
        """
        return pulumi.get(self, "body_validations")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="headerValidations")
    def header_validations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderValidationResult']:
        """
        Validate the HTTP headers on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "header_validations")

    @property
    @pulumi.getter(name="queryParameterTransformations")
    def query_parameter_transformations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult']:
        """
        A set of transformations to apply to query parameters that pass through the gateway.
        """
        return pulumi.get(self, "query_parameter_transformations")

    @property
    @pulumi.getter(name="queryParameterValidations")
    def query_parameter_validations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult']:
        """
        Validate the URL query parameters on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "query_parameter_validations")

    @property
    @pulumi.getter(name="responseCacheLookups")
    def response_cache_lookups(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult']:
        """
        Base policy for Response Cache lookup.
        """
        return pulumi.get(self, "response_cache_lookups")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyAuthorizationResult(dict):
    def __init__(__self__, *,
                 allowed_scopes: Sequence[str],
                 type: str):
        """
        :param Sequence[str] allowed_scopes: A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_scopes", allowed_scopes)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="allowedScopes")
    def allowed_scopes(self) -> Sequence[str]:
        """
        A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        """
        return pulumi.get(self, "allowed_scopes")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyBodyValidationResult(dict):
    def __init__(__self__, *,
                 contents: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult'],
                 required: bool,
                 validation_mode: str):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyBodyValidationContentArgs'] contents: The content of the request body.
        :param bool required: Determines if the parameter is required in the request.
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "required", required)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def contents(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult']:
        """
        The content of the request body.
        """
        return pulumi.get(self, "contents")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyBodyValidationContentResult(dict):
    def __init__(__self__, *,
                 media_type: str,
                 validation_type: str):
        """
        :param str media_type: The media type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        :param str validation_type: Validation type defines the content validation method.
        """
        pulumi.set(__self__, "media_type", media_type)
        pulumi.set(__self__, "validation_type", validation_type)

    @property
    @pulumi.getter(name="mediaType")
    def media_type(self) -> str:
        """
        The media type is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        """
        return pulumi.get(self, "media_type")

    @property
    @pulumi.getter(name="validationType")
    def validation_type(self) -> str:
        """
        Validation type defines the content validation method.
        """
        return pulumi.get(self, "validation_type")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderValidationResult(dict):
    def __init__(__self__, *,
                 headers: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyHeaderValidationHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationResult(dict):
    def __init__(__self__, *,
                 filter_query_parameters: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult'],
                 rename_query_parameters: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult'],
                 set_query_parameters: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterArgs'] filter_query_parameters: Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterArgs'] rename_query_parameters: Rename parameters on the query string as they pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterArgs'] set_query_parameters: Set parameters on the query string as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_query_parameters", filter_query_parameters)
        pulumi.set(__self__, "rename_query_parameters", rename_query_parameters)
        pulumi.set(__self__, "set_query_parameters", set_query_parameters)

    @property
    @pulumi.getter(name="filterQueryParameters")
    def filter_query_parameters(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult']:
        """
        Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_query_parameters")

    @property
    @pulumi.getter(name="renameQueryParameters")
    def rename_query_parameters(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult']:
        """
        Rename parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "rename_query_parameters")

    @property
    @pulumi.getter(name="setQueryParameters")
    def set_query_parameters(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']:
        """
        Set parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "set_query_parameters")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationResult(dict):
    def __init__(__self__, *,
                 parameters: Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def parameters(self) -> Sequence['outputs.GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult']:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyQueryParameterValidationParameterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetDeploymentSpecificationRouteRequestPolicyResponseCacheLookupResult(dict):
    def __init__(__self__, *,
                 cache_key_additions: Sequence[str],
                 is_enabled: bool,
                 is_private_caching_enabled: bool,
                 type: str):
        """
        :param Sequence[str] cache_key_additions: A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        :param bool is_enabled: Whether this policy is currently enabled.
        :param bool is_private_caching_enabled: Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "cache_key_additions", cache_key_additions)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "is_private_caching_enabled", is_private_caching_enabled)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="cacheKeyAdditions")
    def cache_key_additions(self) -> Sequence[str]:
        """
        A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        """
        return pulumi.get(self, "cache_key_additions")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="isPrivateCachingEnabled")
    def is_private_caching_enabled(self) -> bool:
        """
        Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        """
        return pulumi.get(self, "is_private_caching_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyResult(dict):
    def __init__(__self__, *,
                 header_transformations: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult'],
                 response_cache_stores: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyResponseCacheStoreArgs'] response_cache_stores: Base policy for how a response from a backend is cached in the Response Cache.
        """
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "response_cache_stores", response_cache_stores)

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="responseCacheStores")
    def response_cache_stores(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult']:
        """
        Base policy for how a response from a backend is cached in the Response Cache.
        """
        return pulumi.get(self, "response_cache_stores")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentSpecificationRouteResponsePolicyResponseCacheStoreResult(dict):
    def __init__(__self__, *,
                 time_to_live_in_seconds: int,
                 type: str):
        """
        :param int time_to_live_in_seconds: Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "time_to_live_in_seconds", time_to_live_in_seconds)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="timeToLiveInSeconds")
    def time_to_live_in_seconds(self) -> int:
        """
        Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        """
        return pulumi.get(self, "time_to_live_in_seconds")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 endpoint: str,
                 freeform_tags: Mapping[str, Any],
                 gateway_id: str,
                 id: str,
                 lifecycle_details: str,
                 path_prefix: str,
                 specifications: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationResult'],
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param str endpoint: The endpoint to access this deployment on the gateway.
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str gateway_id: Filter deployments by the gateway ocid.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str lifecycle_details: A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        :param str path_prefix: A path on which to deploy all routes contained in the API deployment specification. For more information, see [Deploying an API on an API Gateway by Creating an API Deployment](https://docs.cloud.oracle.com/iaas/Content/APIGateway/Tasks/apigatewaycreatingdeployment.htm).
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationArgs'] specifications: The logical configuration of the API exposed by a deployment.
        :param str state: A filter to return only resources that match the given lifecycle state.  Example: `SUCCEEDED`
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "endpoint", endpoint)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "gateway_id", gateway_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "path_prefix", path_prefix)
        pulumi.set(__self__, "specifications", specifications)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def endpoint(self) -> str:
        """
        The endpoint to access this deployment on the gateway.
        """
        return pulumi.get(self, "endpoint")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter(name="gatewayId")
    def gateway_id(self) -> str:
        """
        Filter deployments by the gateway ocid.
        """
        return pulumi.get(self, "gateway_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="pathPrefix")
    def path_prefix(self) -> str:
        """
        A path on which to deploy all routes contained in the API deployment specification. For more information, see [Deploying an API on an API Gateway by Creating an API Deployment](https://docs.cloud.oracle.com/iaas/Content/APIGateway/Tasks/apigatewaycreatingdeployment.htm).
        """
        return pulumi.get(self, "path_prefix")

    @property
    @pulumi.getter
    def specifications(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationResult']:
        """
        The logical configuration of the API exposed by a deployment.
        """
        return pulumi.get(self, "specifications")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state.  Example: `SUCCEEDED`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationResult(dict):
    def __init__(__self__, *,
                 logging_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyResult'],
                 request_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyResult'],
                 routes: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyArgs'] logging_policies: Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyArgs'] request_policies: Behavior applied to any requests received by the API on this route.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteArgs'] routes: A list of routes that this API exposes.
        """
        pulumi.set(__self__, "logging_policies", logging_policies)
        pulumi.set(__self__, "request_policies", request_policies)
        pulumi.set(__self__, "routes", routes)

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyResult']:
        """
        Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyResult']:
        """
        Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter
    def routes(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResult']:
        """
        A list of routes that this API exposes.
        """
        return pulumi.get(self, "routes")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authentications: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationResult'],
                 cors: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyCorResult'],
                 dynamic_authentications: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationResult'],
                 mutual_tls: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyMutualTlResult'],
                 rate_limitings: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyRateLimitingResult'],
                 usage_plans: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyUsagePlanResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationArgs'] authentications: Information on how to authenticate incoming requests.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationArgs'] dynamic_authentications: Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyMutualTlArgs'] mutual_tls: Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyRateLimitingArgs'] rate_limitings: Limit the number of requests that should be handled for the specified window using a specfic key.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyUsagePlanArgs'] usage_plans: Usage plan policies for this deployment
        """
        pulumi.set(__self__, "authentications", authentications)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "dynamic_authentications", dynamic_authentications)
        pulumi.set(__self__, "mutual_tls", mutual_tls)
        pulumi.set(__self__, "rate_limitings", rate_limitings)
        pulumi.set(__self__, "usage_plans", usage_plans)

    @property
    @pulumi.getter
    def authentications(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentications")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="dynamicAuthentications")
    def dynamic_authentications(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationResult']:
        """
        Policy on how to authenticate requests when multiple authentication options are configured for a deployment. For an incoming request, the value of selector specified under selectionSource will be matched against the keys specified for each authentication server. The authentication server whose key matches the value of selector will be used for authentication.
        """
        return pulumi.get(self, "dynamic_authentications")

    @property
    @pulumi.getter(name="mutualTls")
    def mutual_tls(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyMutualTlResult']:
        """
        Properties used to configure client mTLS verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "mutual_tls")

    @property
    @pulumi.getter(name="rateLimitings")
    def rate_limitings(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyRateLimitingResult']:
        """
        Limit the number of requests that should be handled for the specified window using a specfic key.
        """
        return pulumi.get(self, "rate_limitings")

    @property
    @pulumi.getter(name="usagePlans")
    def usage_plans(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyUsagePlanResult']:
        """
        Usage plan policies for this deployment
        """
        return pulumi.get(self, "usage_plans")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyAuthenticationVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationResult(dict):
    def __init__(__self__, *,
                 authentication_servers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult'],
                 selection_sources: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerArgs'] authentication_servers: List of authentication servers to choose from during dynamic authentication.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        pulumi.set(__self__, "authentication_servers", authentication_servers)
        pulumi.set(__self__, "selection_sources", selection_sources)

    @property
    @pulumi.getter(name="authenticationServers")
    def authentication_servers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult']:
        """
        List of authentication servers to choose from during dynamic authentication.
        """
        return pulumi.get(self, "authentication_servers")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerResult(dict):
    def __init__(__self__, *,
                 authentication_server_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult'],
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailArgs'] authentication_server_details: Information on how to authenticate incoming requests.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "authentication_server_details", authentication_server_details)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter(name="authenticationServerDetails")
    def authentication_server_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult']:
        """
        Information on how to authenticate incoming requests.
        """
        return pulumi.get(self, "authentication_server_details")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 cache_keys: Sequence[str],
                 function_id: str,
                 is_anonymous_access_allowed: bool,
                 issuers: Sequence[str],
                 max_clock_skew_in_seconds: float,
                 parameters: Mapping[str, Any],
                 public_keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult'],
                 token_auth_scheme: str,
                 token_header: str,
                 token_query_param: str,
                 type: str,
                 validation_failure_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult'],
                 validation_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult'],
                 verify_claims: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] cache_keys: A list of keys from "parameters" attribute value whose values will be added to the cache key.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_anonymous_access_allowed: Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param float max_clock_skew_in_seconds: The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyArgs'] public_keys: A set of Public Keys that will be used to verify the JWT signature.
        :param str token_auth_scheme: The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        :param str token_header: The name of the header containing the authentication token.
        :param str token_query_param: The name of the query parameter containing the authentication token.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyArgs'] validation_failure_policies: Policy for defining behaviour on validation failure.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyArgs'] validation_policies: Authentication Policies for the Token Authentication types.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "cache_keys", cache_keys)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "is_anonymous_access_allowed", is_anonymous_access_allowed)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "max_clock_skew_in_seconds", max_clock_skew_in_seconds)
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "public_keys", public_keys)
        pulumi.set(__self__, "token_auth_scheme", token_auth_scheme)
        pulumi.set(__self__, "token_header", token_header)
        pulumi.set(__self__, "token_query_param", token_query_param)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "validation_failure_policies", validation_failure_policies)
        pulumi.set(__self__, "validation_policies", validation_policies)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter(name="cacheKeys")
    def cache_keys(self) -> Sequence[str]:
        """
        A list of keys from "parameters" attribute value whose values will be added to the cache key.
        """
        return pulumi.get(self, "cache_keys")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter(name="isAnonymousAccessAllowed")
    def is_anonymous_access_allowed(self) -> bool:
        """
        Whether an unauthenticated user may access the API. Must be "true" to enable ANONYMOUS route authorization.
        """
        return pulumi.get(self, "is_anonymous_access_allowed")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="maxClockSkewInSeconds")
    def max_clock_skew_in_seconds(self) -> float:
        """
        The maximum expected time difference between the system clocks of the token issuer and the API Gateway.
        """
        return pulumi.get(self, "max_clock_skew_in_seconds")

    @property
    @pulumi.getter
    def parameters(self) -> Mapping[str, Any]:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="publicKeys")
    def public_keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult']:
        """
        A set of Public Keys that will be used to verify the JWT signature.
        """
        return pulumi.get(self, "public_keys")

    @property
    @pulumi.getter(name="tokenAuthScheme")
    def token_auth_scheme(self) -> str:
        """
        The authentication scheme that is to be used when authenticating the token. This must to be provided if "tokenHeader" is specified.
        """
        return pulumi.get(self, "token_auth_scheme")

    @property
    @pulumi.getter(name="tokenHeader")
    def token_header(self) -> str:
        """
        The name of the header containing the authentication token.
        """
        return pulumi.get(self, "token_header")

    @property
    @pulumi.getter(name="tokenQueryParam")
    def token_query_param(self) -> str:
        """
        The name of the query parameter containing the authentication token.
        """
        return pulumi.get(self, "token_query_param")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="validationFailurePolicies")
    def validation_failure_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult']:
        """
        Policy for defining behaviour on validation failure.
        """
        return pulumi.get(self, "validation_failure_policies")

    @property
    @pulumi.getter(name="validationPolicies")
    def validation_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult']:
        """
        Authentication Policies for the Token Authentication types.
        """
        return pulumi.get(self, "validation_policies")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyResult(dict):
    def __init__(__self__, *,
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult'],
                 max_cache_duration_in_hours: int,
                 type: str,
                 uri: str):
        """
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailPublicKeyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResult(dict):
    def __init__(__self__, *,
                 client_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult'],
                 fallback_redirect_path: str,
                 logout_path: str,
                 max_expiry_duration_in_hours: int,
                 response_code: str,
                 response_header_transformations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult'],
                 response_message: str,
                 response_type: str,
                 scopes: Sequence[str],
                 source_uri_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult'],
                 type: str,
                 use_cookies_for_intermediate_steps: bool,
                 use_cookies_for_session: bool,
                 use_pkce: bool):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailArgs'] client_details: Client App Credential details.
        :param str fallback_redirect_path: The path to be used as fallback after OAuth2.
        :param str logout_path: The path to be used as logout.
        :param int max_expiry_duration_in_hours: The duration for which the OAuth2 success token should be cached before it is fetched again.
        :param str response_code: HTTP response code, can include context variables.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationArgs'] response_header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param str response_message: HTTP response message.
        :param str response_type: Response Type.
        :param Sequence[str] scopes: List of scopes.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param bool use_cookies_for_intermediate_steps: Defines whether or not to use cookies for OAuth2 intermediate steps.
        :param bool use_cookies_for_session: Defines whether or not to use cookies for session maintenance.
        :param bool use_pkce: Defines whether or not to support PKCE.
        """
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "fallback_redirect_path", fallback_redirect_path)
        pulumi.set(__self__, "logout_path", logout_path)
        pulumi.set(__self__, "max_expiry_duration_in_hours", max_expiry_duration_in_hours)
        pulumi.set(__self__, "response_code", response_code)
        pulumi.set(__self__, "response_header_transformations", response_header_transformations)
        pulumi.set(__self__, "response_message", response_message)
        pulumi.set(__self__, "response_type", response_type)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "use_cookies_for_intermediate_steps", use_cookies_for_intermediate_steps)
        pulumi.set(__self__, "use_cookies_for_session", use_cookies_for_session)
        pulumi.set(__self__, "use_pkce", use_pkce)

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="fallbackRedirectPath")
    def fallback_redirect_path(self) -> str:
        """
        The path to be used as fallback after OAuth2.
        """
        return pulumi.get(self, "fallback_redirect_path")

    @property
    @pulumi.getter(name="logoutPath")
    def logout_path(self) -> str:
        """
        The path to be used as logout.
        """
        return pulumi.get(self, "logout_path")

    @property
    @pulumi.getter(name="maxExpiryDurationInHours")
    def max_expiry_duration_in_hours(self) -> int:
        """
        The duration for which the OAuth2 success token should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_expiry_duration_in_hours")

    @property
    @pulumi.getter(name="responseCode")
    def response_code(self) -> str:
        """
        HTTP response code, can include context variables.
        """
        return pulumi.get(self, "response_code")

    @property
    @pulumi.getter(name="responseHeaderTransformations")
    def response_header_transformations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "response_header_transformations")

    @property
    @pulumi.getter(name="responseMessage")
    def response_message(self) -> str:
        """
        HTTP response message.
        """
        return pulumi.get(self, "response_message")

    @property
    @pulumi.getter(name="responseType")
    def response_type(self) -> str:
        """
        Response Type.
        """
        return pulumi.get(self, "response_type")

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

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="useCookiesForIntermediateSteps")
    def use_cookies_for_intermediate_steps(self) -> bool:
        """
        Defines whether or not to use cookies for OAuth2 intermediate steps.
        """
        return pulumi.get(self, "use_cookies_for_intermediate_steps")

    @property
    @pulumi.getter(name="useCookiesForSession")
    def use_cookies_for_session(self) -> bool:
        """
        Defines whether or not to use cookies for session maintenance.
        """
        return pulumi.get(self, "use_cookies_for_session")

    @property
    @pulumi.getter(name="usePkce")
    def use_pkce(self) -> bool:
        """
        Defines whether or not to support PKCE.
        """
        return pulumi.get(self, "use_pkce")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationFailurePolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyResult(dict):
    def __init__(__self__, *,
                 additional_validation_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult'],
                 client_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult'],
                 is_ssl_verify_disabled: bool,
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult'],
                 max_cache_duration_in_hours: int,
                 source_uri_details: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult'],
                 type: str,
                 uri: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyArgs'] additional_validation_policies: Additional JWT validation checks.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailArgs'] client_details: Client App Credential details.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyArgs'] keys: The set of static public keys.
        :param int max_cache_duration_in_hours: The duration for which the introspect URL response should be cached before it is fetched again.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailArgs'] source_uri_details: Auth endpoint details.
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "additional_validation_policies", additional_validation_policies)
        pulumi.set(__self__, "client_details", client_details)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "keys", keys)
        pulumi.set(__self__, "max_cache_duration_in_hours", max_cache_duration_in_hours)
        pulumi.set(__self__, "source_uri_details", source_uri_details)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter(name="additionalValidationPolicies")
    def additional_validation_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult']:
        """
        Additional JWT validation checks.
        """
        return pulumi.get(self, "additional_validation_policies")

    @property
    @pulumi.getter(name="clientDetails")
    def client_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult']:
        """
        Client App Credential details.
        """
        return pulumi.get(self, "client_details")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult']:
        """
        The set of static public keys.
        """
        return pulumi.get(self, "keys")

    @property
    @pulumi.getter(name="maxCacheDurationInHours")
    def max_cache_duration_in_hours(self) -> int:
        """
        The duration for which the introspect URL response should be cached before it is fetched again.
        """
        return pulumi.get(self, "max_cache_duration_in_hours")

    @property
    @pulumi.getter(name="sourceUriDetails")
    def source_uri_details(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult']:
        """
        Auth endpoint details.
        """
        return pulumi.get(self, "source_uri_details")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyResult(dict):
    def __init__(__self__, *,
                 audiences: Sequence[str],
                 issuers: Sequence[str],
                 verify_claims: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']):
        """
        :param Sequence[str] audiences: The list of intended recipients for the token.
        :param Sequence[str] issuers: A list of parties that could have issued the token.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimArgs'] verify_claims: A list of claims which should be validated to consider the token valid.
        """
        pulumi.set(__self__, "audiences", audiences)
        pulumi.set(__self__, "issuers", issuers)
        pulumi.set(__self__, "verify_claims", verify_claims)

    @property
    @pulumi.getter
    def audiences(self) -> Sequence[str]:
        """
        The list of intended recipients for the token.
        """
        return pulumi.get(self, "audiences")

    @property
    @pulumi.getter
    def issuers(self) -> Sequence[str]:
        """
        A list of parties that could have issued the token.
        """
        return pulumi.get(self, "issuers")

    @property
    @pulumi.getter(name="verifyClaims")
    def verify_claims(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult']:
        """
        A list of claims which should be validated to consider the token valid.
        """
        return pulumi.get(self, "verify_claims")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyClientDetailResult(dict):
    def __init__(__self__, *,
                 client_id: str,
                 client_secret_id: str,
                 client_secret_version_number: str,
                 type: str):
        """
        :param str client_id: Client ID for the OAuth2/OIDC app.
        :param str client_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str client_secret_version_number: The version number of the client secret to use.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_id", client_secret_id)
        pulumi.set(__self__, "client_secret_version_number", client_secret_version_number)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="clientId")
    def client_id(self) -> str:
        """
        Client ID for the OAuth2/OIDC app.
        """
        return pulumi.get(self, "client_id")

    @property
    @pulumi.getter(name="clientSecretId")
    def client_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "client_secret_id")

    @property
    @pulumi.getter(name="clientSecretVersionNumber")
    def client_secret_version_number(self) -> str:
        """
        The version number of the client secret to use.
        """
        return pulumi.get(self, "client_secret_version_number")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicyKeyResult(dict):
    def __init__(__self__, *,
                 alg: str,
                 e: str,
                 format: str,
                 key: str,
                 key_ops: Sequence[str],
                 kid: str,
                 kty: str,
                 n: str,
                 use: str):
        """
        :param str alg: The algorithm intended for use with this key.
        :param str e: The base64 url encoded exponent of the RSA public key represented by this key.
        :param str format: The format of the public key.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] key_ops: The operations for which this key is to be used.
        :param str kid: A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        :param str kty: The key type.
        :param str n: The base64 url encoded modulus of the RSA public key represented by this key.
        :param str use: The intended use of the public key.
        """
        pulumi.set(__self__, "alg", alg)
        pulumi.set(__self__, "e", e)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "key_ops", key_ops)
        pulumi.set(__self__, "kid", kid)
        pulumi.set(__self__, "kty", kty)
        pulumi.set(__self__, "n", n)
        pulumi.set(__self__, "use", use)

    @property
    @pulumi.getter
    def alg(self) -> str:
        """
        The algorithm intended for use with this key.
        """
        return pulumi.get(self, "alg")

    @property
    @pulumi.getter
    def e(self) -> str:
        """
        The base64 url encoded exponent of the RSA public key represented by this key.
        """
        return pulumi.get(self, "e")

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        The format of the public key.
        """
        return pulumi.get(self, "format")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter(name="keyOps")
    def key_ops(self) -> Sequence[str]:
        """
        The operations for which this key is to be used.
        """
        return pulumi.get(self, "key_ops")

    @property
    @pulumi.getter
    def kid(self) -> str:
        """
        A unique key ID. This key will be used to verify the signature of a JWT with matching "kid".
        """
        return pulumi.get(self, "kid")

    @property
    @pulumi.getter
    def kty(self) -> str:
        """
        The key type.
        """
        return pulumi.get(self, "kty")

    @property
    @pulumi.getter
    def n(self) -> str:
        """
        The base64 url encoded modulus of the RSA public key represented by this key.
        """
        return pulumi.get(self, "n")

    @property
    @pulumi.getter
    def use(self) -> str:
        """
        The intended use of the public key.
        """
        return pulumi.get(self, "use")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailValidationPolicySourceUriDetailResult(dict):
    def __init__(__self__, *,
                 type: str,
                 uri: str):
        """
        :param str type: Type of the Response Cache Store Policy.
        :param str uri: The uri from which to retrieve the key. It must be accessible without authentication.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "uri", uri)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def uri(self) -> str:
        """
        The uri from which to retrieve the key. It must be accessible without authentication.
        """
        return pulumi.get(self, "uri")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerAuthenticationServerDetailVerifyClaimResult(dict):
    def __init__(__self__, *,
                 is_required: bool,
                 key: str,
                 values: Sequence[str]):
        """
        :param bool is_required: Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        :param str key: Information around the values for selector of an authentication/ routing branch.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "is_required", is_required)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> bool:
        """
        Whether the claim is required to be present in the JWT or not. If set to "false", the claim values will be matched only if the claim is present in the JWT.
        """
        return pulumi.get(self, "is_required")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationAuthenticationServerKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyDynamicAuthenticationSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyMutualTlResult(dict):
    def __init__(__self__, *,
                 allowed_sans: Sequence[str],
                 is_verified_certificate_required: bool):
        """
        :param Sequence[str] allowed_sans: Allowed list of CN or SAN which will be used for verification of certificate.
        :param bool is_verified_certificate_required: Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        pulumi.set(__self__, "allowed_sans", allowed_sans)
        pulumi.set(__self__, "is_verified_certificate_required", is_verified_certificate_required)

    @property
    @pulumi.getter(name="allowedSans")
    def allowed_sans(self) -> Sequence[str]:
        """
        Allowed list of CN or SAN which will be used for verification of certificate.
        """
        return pulumi.get(self, "allowed_sans")

    @property
    @pulumi.getter(name="isVerifiedCertificateRequired")
    def is_verified_certificate_required(self) -> bool:
        """
        Determines whether to enable client verification when API Consumer makes connection to the gateway.
        """
        return pulumi.get(self, "is_verified_certificate_required")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyRateLimitingResult(dict):
    def __init__(__self__, *,
                 rate_in_requests_per_second: int,
                 rate_key: str):
        """
        :param int rate_in_requests_per_second: The maximum number of requests per second to allow.
        :param str rate_key: The key used to group requests together.
        """
        pulumi.set(__self__, "rate_in_requests_per_second", rate_in_requests_per_second)
        pulumi.set(__self__, "rate_key", rate_key)

    @property
    @pulumi.getter(name="rateInRequestsPerSecond")
    def rate_in_requests_per_second(self) -> int:
        """
        The maximum number of requests per second to allow.
        """
        return pulumi.get(self, "rate_in_requests_per_second")

    @property
    @pulumi.getter(name="rateKey")
    def rate_key(self) -> str:
        """
        The key used to group requests together.
        """
        return pulumi.get(self, "rate_key")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRequestPolicyUsagePlanResult(dict):
    def __init__(__self__, *,
                 token_locations: Sequence[str]):
        """
        :param Sequence[str] token_locations: A list of context variables specifying where API tokens may be located in a request. Example locations:
               * "request.headers[token]"
               * "request.query[token]"
               * "request.auth[Token]"
               * "request.path[TOKEN]"
        """
        pulumi.set(__self__, "token_locations", token_locations)

    @property
    @pulumi.getter(name="tokenLocations")
    def token_locations(self) -> Sequence[str]:
        """
        A list of context variables specifying where API tokens may be located in a request. Example locations:
        * "request.headers[token]"
        * "request.query[token]"
        * "request.auth[Token]"
        * "request.path[TOKEN]"
        """
        return pulumi.get(self, "token_locations")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendResult'],
                 logging_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyResult'],
                 methods: Sequence[str],
                 path: str,
                 request_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResult'],
                 response_policies: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyArgs'] logging_policies: Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        :param Sequence[str] methods: A list of allowed methods on this route.
        :param str path: A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyArgs'] request_policies: Behavior applied to any requests received by the API on this route.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyArgs'] response_policies: Behavior applied to any responses sent by the API for requests on this route.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "logging_policies", logging_policies)
        pulumi.set(__self__, "methods", methods)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "request_policies", request_policies)
        pulumi.set(__self__, "response_policies", response_policies)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter(name="loggingPolicies")
    def logging_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyResult']:
        """
        Policies controlling the pushing of logs to Oracle Cloud Infrastructure Public Logging.
        """
        return pulumi.get(self, "logging_policies")

    @property
    @pulumi.getter
    def methods(self) -> Sequence[str]:
        """
        A list of allowed methods on this route.
        """
        return pulumi.get(self, "methods")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        A URL path pattern that must be matched on this route. The path pattern may contain a subset of RFC 6570 identifiers to allow wildcard and parameterized matching.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="requestPolicies")
    def request_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResult']:
        """
        Behavior applied to any requests received by the API on this route.
        """
        return pulumi.get(self, "request_policies")

    @property
    @pulumi.getter(name="responsePolicies")
    def response_policies(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResult']:
        """
        Behavior applied to any responses sent by the API for requests on this route.
        """
        return pulumi.get(self, "response_policies")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendResult(dict):
    def __init__(__self__, *,
                 allowed_post_logout_uris: Sequence[str],
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 post_logout_state: str,
                 read_timeout_in_seconds: float,
                 routing_backends: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendResult'],
                 selection_sources: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendSelectionSourceResult'],
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param str post_logout_state: Defines a state that should be shared on redirecting to postLogout URL.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendArgs'] routing_backends: List of backends to chose from for Dynamic Routing.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteBackendSelectionSourceArgs'] selection_sources: Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_post_logout_uris", allowed_post_logout_uris)
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "post_logout_state", post_logout_state)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "routing_backends", routing_backends)
        pulumi.set(__self__, "selection_sources", selection_sources)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

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

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="postLogoutState")
    def post_logout_state(self) -> str:
        """
        Defines a state that should be shared on redirecting to postLogout URL.
        """
        return pulumi.get(self, "post_logout_state")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="routingBackends")
    def routing_backends(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendResult']:
        """
        List of backends to chose from for Dynamic Routing.
        """
        return pulumi.get(self, "routing_backends")

    @property
    @pulumi.getter(name="selectionSources")
    def selection_sources(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendSelectionSourceResult']:
        """
        Information around selector used for branching among routes/ authentication servers while dynamic routing/ authentication.
        """
        return pulumi.get(self, "selection_sources")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendResult(dict):
    def __init__(__self__, *,
                 backends: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendResult'],
                 keys: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendKeyResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendArgs'] backends: The backend to forward requests to.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendKeyArgs'] keys: Information around the values for selector of an authentication/ routing branch.
        """
        pulumi.set(__self__, "backends", backends)
        pulumi.set(__self__, "keys", keys)

    @property
    @pulumi.getter
    def backends(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendResult']:
        """
        The backend to forward requests to.
        """
        return pulumi.get(self, "backends")

    @property
    @pulumi.getter
    def keys(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendKeyResult']:
        """
        Information around the values for selector of an authentication/ routing branch.
        """
        return pulumi.get(self, "keys")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendResult(dict):
    def __init__(__self__, *,
                 body: str,
                 connect_timeout_in_seconds: float,
                 function_id: str,
                 headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendHeaderResult'],
                 is_ssl_verify_disabled: bool,
                 read_timeout_in_seconds: float,
                 send_timeout_in_seconds: float,
                 status: int,
                 type: str,
                 url: str):
        """
        :param str body: The body of the stock response from the mock backend.
        :param float connect_timeout_in_seconds: Defines a timeout for establishing a connection with a proxied server.
        :param str function_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param float read_timeout_in_seconds: Defines a timeout for reading a response from the proxied server.
        :param float send_timeout_in_seconds: Defines a timeout for transmitting a request to the proxied server.
        :param int status: The status code of the stock response from the mock backend.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "body", body)
        pulumi.set(__self__, "connect_timeout_in_seconds", connect_timeout_in_seconds)
        pulumi.set(__self__, "function_id", function_id)
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "read_timeout_in_seconds", read_timeout_in_seconds)
        pulumi.set(__self__, "send_timeout_in_seconds", send_timeout_in_seconds)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def body(self) -> str:
        """
        The body of the stock response from the mock backend.
        """
        return pulumi.get(self, "body")

    @property
    @pulumi.getter(name="connectTimeoutInSeconds")
    def connect_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for establishing a connection with a proxied server.
        """
        return pulumi.get(self, "connect_timeout_in_seconds")

    @property
    @pulumi.getter(name="functionId")
    def function_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Functions function resource.
        """
        return pulumi.get(self, "function_id")

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInSeconds")
    def read_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for reading a response from the proxied server.
        """
        return pulumi.get(self, "read_timeout_in_seconds")

    @property
    @pulumi.getter(name="sendTimeoutInSeconds")
    def send_timeout_in_seconds(self) -> float:
        """
        Defines a timeout for transmitting a request to the proxied server.
        """
        return pulumi.get(self, "send_timeout_in_seconds")

    @property
    @pulumi.getter
    def status(self) -> int:
        """
        The status code of the stock response from the mock backend.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

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


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendBackendHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 value: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str value: Value of the header.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        Value of the header.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendRoutingBackendKeyResult(dict):
    def __init__(__self__, *,
                 expression: str,
                 is_default: bool,
                 name: str,
                 type: str,
                 values: Sequence[str]):
        """
        :param str expression: String describing the expression with wildcards.
        :param bool is_default: Information regarding whether this is the default branch.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str type: Type of the Response Cache Store Policy.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def expression(self) -> str:
        """
        String describing the expression with wildcards.
        """
        return pulumi.get(self, "expression")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Information regarding whether this is the default branch.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteBackendSelectionSourceResult(dict):
    def __init__(__self__, *,
                 selector: str,
                 type: str):
        """
        :param str selector: String describing the context variable used as selector.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "selector", selector)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def selector(self) -> str:
        """
        String describing the context variable used as selector.
        """
        return pulumi.get(self, "selector")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyResult(dict):
    def __init__(__self__, *,
                 access_logs: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyAccessLogResult'],
                 execution_logs: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyExecutionLogResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyAccessLogArgs'] access_logs: Configures the logging policies for the access logs of an API Deployment.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyExecutionLogArgs'] execution_logs: Configures the logging policies for the execution logs of an API Deployment.
        """
        pulumi.set(__self__, "access_logs", access_logs)
        pulumi.set(__self__, "execution_logs", execution_logs)

    @property
    @pulumi.getter(name="accessLogs")
    def access_logs(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyAccessLogResult']:
        """
        Configures the logging policies for the access logs of an API Deployment.
        """
        return pulumi.get(self, "access_logs")

    @property
    @pulumi.getter(name="executionLogs")
    def execution_logs(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyExecutionLogResult']:
        """
        Configures the logging policies for the execution logs of an API Deployment.
        """
        return pulumi.get(self, "execution_logs")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyAccessLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteLoggingPolicyExecutionLogResult(dict):
    def __init__(__self__, *,
                 is_enabled: bool,
                 log_level: str):
        """
        :param bool is_enabled: Whether this policy is currently enabled.
        :param str log_level: Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "log_level", log_level)

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="logLevel")
    def log_level(self) -> str:
        """
        Specifies the log level used to control logging output of execution logs. Enabling logging at a given level also enables logging at all higher levels.
        """
        return pulumi.get(self, "log_level")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResult(dict):
    def __init__(__self__, *,
                 authorizations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyAuthorizationResult'],
                 body_validations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationResult'],
                 cors: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyCorResult'],
                 header_transformations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationResult'],
                 header_validations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationResult'],
                 query_parameter_transformations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationResult'],
                 query_parameter_validations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationResult'],
                 response_cache_lookups: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResponseCacheLookupResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyAuthorizationArgs'] authorizations: If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationArgs'] body_validations: Validate the payload body of the incoming API requests on a specific route.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyCorArgs'] cors: Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationArgs'] header_validations: Validate the HTTP headers on the incoming API requests on a specific route.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationArgs'] query_parameter_transformations: A set of transformations to apply to query parameters that pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationArgs'] query_parameter_validations: Validate the URL query parameters on the incoming API requests on a specific route.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResponseCacheLookupArgs'] response_cache_lookups: Base policy for Response Cache lookup.
        """
        pulumi.set(__self__, "authorizations", authorizations)
        pulumi.set(__self__, "body_validations", body_validations)
        pulumi.set(__self__, "cors", cors)
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "header_validations", header_validations)
        pulumi.set(__self__, "query_parameter_transformations", query_parameter_transformations)
        pulumi.set(__self__, "query_parameter_validations", query_parameter_validations)
        pulumi.set(__self__, "response_cache_lookups", response_cache_lookups)

    @property
    @pulumi.getter
    def authorizations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyAuthorizationResult']:
        """
        If authentication has been performed, validate whether the request scope (if any) applies to this route. If no RouteAuthorizationPolicy is defined for a route, a policy with a type of AUTHENTICATION_ONLY is applied.
        """
        return pulumi.get(self, "authorizations")

    @property
    @pulumi.getter(name="bodyValidations")
    def body_validations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationResult']:
        """
        Validate the payload body of the incoming API requests on a specific route.
        """
        return pulumi.get(self, "body_validations")

    @property
    @pulumi.getter
    def cors(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyCorResult']:
        """
        Enable CORS (Cross-Origin-Resource-Sharing) request handling.
        """
        return pulumi.get(self, "cors")

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="headerValidations")
    def header_validations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationResult']:
        """
        Validate the HTTP headers on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "header_validations")

    @property
    @pulumi.getter(name="queryParameterTransformations")
    def query_parameter_transformations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationResult']:
        """
        A set of transformations to apply to query parameters that pass through the gateway.
        """
        return pulumi.get(self, "query_parameter_transformations")

    @property
    @pulumi.getter(name="queryParameterValidations")
    def query_parameter_validations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationResult']:
        """
        Validate the URL query parameters on the incoming API requests on a specific route.
        """
        return pulumi.get(self, "query_parameter_validations")

    @property
    @pulumi.getter(name="responseCacheLookups")
    def response_cache_lookups(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResponseCacheLookupResult']:
        """
        Base policy for Response Cache lookup.
        """
        return pulumi.get(self, "response_cache_lookups")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyAuthorizationResult(dict):
    def __init__(__self__, *,
                 allowed_scopes: Sequence[str],
                 type: str):
        """
        :param Sequence[str] allowed_scopes: A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "allowed_scopes", allowed_scopes)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="allowedScopes")
    def allowed_scopes(self) -> Sequence[str]:
        """
        A user whose scope includes any of these access ranges is allowed on this route. Access ranges are case-sensitive.
        """
        return pulumi.get(self, "allowed_scopes")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationResult(dict):
    def __init__(__self__, *,
                 contents: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationContentResult'],
                 required: bool,
                 validation_mode: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationContentArgs'] contents: The content of the request body.
        :param bool required: Determines if the parameter is required in the request.
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "required", required)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def contents(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationContentResult']:
        """
        The content of the request body.
        """
        return pulumi.get(self, "contents")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyBodyValidationContentResult(dict):
    def __init__(__self__, *,
                 media_type: str,
                 validation_type: str):
        """
        :param str media_type: The key is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        :param str validation_type: Validation type defines the content validation method.
        """
        pulumi.set(__self__, "media_type", media_type)
        pulumi.set(__self__, "validation_type", validation_type)

    @property
    @pulumi.getter(name="mediaType")
    def media_type(self) -> str:
        """
        The key is a [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) subset restricted to the following schema
        """
        return pulumi.get(self, "media_type")

    @property
    @pulumi.getter(name="validationType")
    def validation_type(self) -> str:
        """
        Validation type defines the content validation method.
        """
        return pulumi.get(self, "validation_type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyCorResult(dict):
    def __init__(__self__, *,
                 allowed_headers: Sequence[str],
                 allowed_methods: Sequence[str],
                 allowed_origins: Sequence[str],
                 exposed_headers: Sequence[str],
                 is_allow_credentials_enabled: bool,
                 max_age_in_seconds: int):
        """
        :param Sequence[str] allowed_headers: The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        :param Sequence[str] allowed_methods: The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        :param Sequence[str] allowed_origins: The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        :param Sequence[str] exposed_headers: The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        :param bool is_allow_credentials_enabled: Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        :param int max_age_in_seconds: The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "is_allow_credentials_enabled", is_allow_credentials_enabled)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> Sequence[str]:
        """
        The list of headers that will be allowed from the client via the Access-Control-Allow-Headers header. '*' will allow all headers.
        """
        return pulumi.get(self, "allowed_headers")

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> Sequence[str]:
        """
        The list of allowed HTTP methods that will be returned for the preflight OPTIONS request in the Access-Control-Allow-Methods header. '*' will allow all methods.
        """
        return pulumi.get(self, "allowed_methods")

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> Sequence[str]:
        """
        The list of allowed origins that the CORS handler will use to respond to CORS requests. The gateway will send the Access-Control-Allow-Origin header with the best origin match for the circumstances. '*' will match any origins, and 'null' will match queries from 'file:' origins. All other origins must be qualified with the scheme, full hostname, and port if necessary.
        """
        return pulumi.get(self, "allowed_origins")

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> Sequence[str]:
        """
        The list of headers that the client will be allowed to see from the response as indicated by the Access-Control-Expose-Headers header. '*' will expose all headers.
        """
        return pulumi.get(self, "exposed_headers")

    @property
    @pulumi.getter(name="isAllowCredentialsEnabled")
    def is_allow_credentials_enabled(self) -> bool:
        """
        Whether to send the Access-Control-Allow-Credentials header to allow CORS requests with cookies.
        """
        return pulumi.get(self, "is_allow_credentials_enabled")

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> int:
        """
        The time in seconds for the client to cache preflight responses. This is sent as the Access-Control-Max-Age if greater than 0.
        """
        return pulumi.get(self, "max_age_in_seconds")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationResult(dict):
    def __init__(__self__, *,
                 headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationHeaderResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "headers", headers)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationHeaderResult']:
        return pulumi.get(self, "headers")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyHeaderValidationHeaderResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationResult(dict):
    def __init__(__self__, *,
                 filter_query_parameters: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult'],
                 rename_query_parameters: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult'],
                 set_query_parameters: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterArgs'] filter_query_parameters: Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterArgs'] rename_query_parameters: Rename parameters on the query string as they pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterArgs'] set_query_parameters: Set parameters on the query string as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_query_parameters", filter_query_parameters)
        pulumi.set(__self__, "rename_query_parameters", rename_query_parameters)
        pulumi.set(__self__, "set_query_parameters", set_query_parameters)

    @property
    @pulumi.getter(name="filterQueryParameters")
    def filter_query_parameters(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult']:
        """
        Filter parameters from the query string as they pass through the gateway.  The gateway applies filters after other transformations, so any parameters set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_query_parameters")

    @property
    @pulumi.getter(name="renameQueryParameters")
    def rename_query_parameters(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult']:
        """
        Rename parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "rename_query_parameters")

    @property
    @pulumi.getter(name="setQueryParameters")
    def set_query_parameters(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult']:
        """
        Set parameters on the query string as they pass through the gateway.
        """
        return pulumi.get(self, "set_query_parameters")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationFilterQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationRenameQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterTransformationSetQueryParameterItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationResult(dict):
    def __init__(__self__, *,
                 parameters: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationParameterResult'],
                 validation_mode: str):
        """
        :param str validation_mode: Validation behavior mode.
        """
        pulumi.set(__self__, "parameters", parameters)
        pulumi.set(__self__, "validation_mode", validation_mode)

    @property
    @pulumi.getter
    def parameters(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationParameterResult']:
        return pulumi.get(self, "parameters")

    @property
    @pulumi.getter(name="validationMode")
    def validation_mode(self) -> str:
        """
        Validation behavior mode.
        """
        return pulumi.get(self, "validation_mode")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyQueryParameterValidationParameterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 required: bool):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param bool required: Determines if the parameter is required in the request.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "required", required)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def required(self) -> bool:
        """
        Determines if the parameter is required in the request.
        """
        return pulumi.get(self, "required")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteRequestPolicyResponseCacheLookupResult(dict):
    def __init__(__self__, *,
                 cache_key_additions: Sequence[str],
                 is_enabled: bool,
                 is_private_caching_enabled: bool,
                 type: str):
        """
        :param Sequence[str] cache_key_additions: A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        :param bool is_enabled: Whether this policy is currently enabled.
        :param bool is_private_caching_enabled: Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "cache_key_additions", cache_key_additions)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "is_private_caching_enabled", is_private_caching_enabled)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="cacheKeyAdditions")
    def cache_key_additions(self) -> Sequence[str]:
        """
        A list of context expressions whose values will be added to the base cache key. Values should contain an expression enclosed within ${} delimiters. Only the request context is available.
        """
        return pulumi.get(self, "cache_key_additions")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Whether this policy is currently enabled.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter(name="isPrivateCachingEnabled")
    def is_private_caching_enabled(self) -> bool:
        """
        Set true to allow caching responses where the request has an Authorization header. Ensure you have configured your  cache key additions to get the level of isolation across authenticated requests that you require.
        """
        return pulumi.get(self, "is_private_caching_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResult(dict):
    def __init__(__self__, *,
                 header_transformations: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationResult'],
                 response_cache_stores: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResponseCacheStoreResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationArgs'] header_transformations: A set of transformations to apply to HTTP headers that pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResponseCacheStoreArgs'] response_cache_stores: Base policy for how a response from a backend is cached in the Response Cache.
        """
        pulumi.set(__self__, "header_transformations", header_transformations)
        pulumi.set(__self__, "response_cache_stores", response_cache_stores)

    @property
    @pulumi.getter(name="headerTransformations")
    def header_transformations(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationResult']:
        """
        A set of transformations to apply to HTTP headers that pass through the gateway.
        """
        return pulumi.get(self, "header_transformations")

    @property
    @pulumi.getter(name="responseCacheStores")
    def response_cache_stores(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResponseCacheStoreResult']:
        """
        Base policy for how a response from a backend is cached in the Response Cache.
        """
        return pulumi.get(self, "response_cache_stores")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationResult(dict):
    def __init__(__self__, *,
                 filter_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult'],
                 rename_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult'],
                 set_headers: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderArgs'] filter_headers: Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderArgs'] rename_headers: Rename HTTP headers as they pass through the gateway.
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderArgs'] set_headers: Set HTTP headers as they pass through the gateway.
        """
        pulumi.set(__self__, "filter_headers", filter_headers)
        pulumi.set(__self__, "rename_headers", rename_headers)
        pulumi.set(__self__, "set_headers", set_headers)

    @property
    @pulumi.getter(name="filterHeaders")
    def filter_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult']:
        """
        Filter HTTP headers as they pass through the gateway.  The gateway applies filters after other transformations, so any headers set or renamed must also be listed here when using an ALLOW type policy.
        """
        return pulumi.get(self, "filter_headers")

    @property
    @pulumi.getter(name="renameHeaders")
    def rename_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult']:
        """
        Rename HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "rename_headers")

    @property
    @pulumi.getter(name="setHeaders")
    def set_headers(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult']:
        """
        Set HTTP headers as they pass through the gateway.
        """
        return pulumi.get(self, "set_headers")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult'],
                 type: str):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemArgs'] items: The list of headers.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationFilterHeaderItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationRenameHeaderItemResult(dict):
    def __init__(__self__, *,
                 from_: str,
                 to: str):
        """
        :param str from_: The original case-insensitive name of the header.  This name must be unique across transformation policies.
        :param str to: The new name of the header.  This name must be unique across transformation policies.
        """
        pulumi.set(__self__, "from_", from_)
        pulumi.set(__self__, "to", to)

    @property
    @pulumi.getter(name="from")
    def from_(self) -> str:
        """
        The original case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "from_")

    @property
    @pulumi.getter
    def to(self) -> str:
        """
        The new name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "to")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']):
        """
        :param Sequence['GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemArgs'] items: The list of headers.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult']:
        """
        The list of headers.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyHeaderTransformationSetHeaderItemResult(dict):
    def __init__(__self__, *,
                 if_exists: str,
                 name: str,
                 values: Sequence[str]):
        """
        :param str if_exists: If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        pulumi.set(__self__, "if_exists", if_exists)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="ifExists")
    def if_exists(self) -> str:
        """
        If a header with the same name already exists in the request, OVERWRITE will overwrite the value, APPEND will append to the existing value, or SKIP will keep the existing value.
        """
        return pulumi.get(self, "if_exists")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GetDeploymentsDeploymentCollectionSpecificationRouteResponsePolicyResponseCacheStoreResult(dict):
    def __init__(__self__, *,
                 time_to_live_in_seconds: int,
                 type: str):
        """
        :param int time_to_live_in_seconds: Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        :param str type: Type of the Response Cache Store Policy.
        """
        pulumi.set(__self__, "time_to_live_in_seconds", time_to_live_in_seconds)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="timeToLiveInSeconds")
    def time_to_live_in_seconds(self) -> int:
        """
        Sets the number of seconds for a response from a backend being stored in the Response Cache before it expires.
        """
        return pulumi.get(self, "time_to_live_in_seconds")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache Store Policy.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The case-insensitive name of the header.  This name must be unique across transformation policies.
        :param Sequence[str] values: A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        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:
        """
        The case-insensitive name of the header.  This name must be unique across transformation policies.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of new values.  Each value can be a constant or may include one or more expressions enclosed within ${} delimiters.
        """
        return pulumi.get(self, "values")

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


@pulumi.output_type
class GetGatewayCaBundleResult(dict):
    def __init__(__self__, *,
                 ca_bundle_id: str,
                 certificate_authority_id: str,
                 type: str):
        """
        :param str ca_bundle_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str certificate_authority_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str type: Type of the Response Cache.
        """
        pulumi.set(__self__, "ca_bundle_id", ca_bundle_id)
        pulumi.set(__self__, "certificate_authority_id", certificate_authority_id)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="caBundleId")
    def ca_bundle_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "ca_bundle_id")

    @property
    @pulumi.getter(name="certificateAuthorityId")
    def certificate_authority_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "certificate_authority_id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetGatewayIpAddressResult(dict):
    def __init__(__self__, *,
                 ip_address: str):
        """
        :param str ip_address: An IP address.
        """
        pulumi.set(__self__, "ip_address", ip_address)

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> str:
        """
        An IP address.
        """
        return pulumi.get(self, "ip_address")


@pulumi.output_type
class GetGatewayResponseCacheDetailResult(dict):
    def __init__(__self__, *,
                 authentication_secret_id: str,
                 authentication_secret_version_number: str,
                 connect_timeout_in_ms: int,
                 is_ssl_enabled: bool,
                 is_ssl_verify_disabled: bool,
                 read_timeout_in_ms: int,
                 send_timeout_in_ms: int,
                 servers: Sequence['outputs.GetGatewayResponseCacheDetailServerResult'],
                 type: str):
        """
        :param str authentication_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str authentication_secret_version_number: The version number of the authentication secret to use.
        :param int connect_timeout_in_ms: Defines the timeout for establishing a connection with the Response Cache.
        :param bool is_ssl_enabled: Defines if the connection should be over SSL.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param int read_timeout_in_ms: Defines the timeout for reading data from the Response Cache.
        :param int send_timeout_in_ms: Defines the timeout for transmitting data to the Response Cache.
        :param Sequence['GetGatewayResponseCacheDetailServerArgs'] servers: The set of cache store members to connect to. At present only a single server is supported.
        :param str type: Type of the Response Cache.
        """
        pulumi.set(__self__, "authentication_secret_id", authentication_secret_id)
        pulumi.set(__self__, "authentication_secret_version_number", authentication_secret_version_number)
        pulumi.set(__self__, "connect_timeout_in_ms", connect_timeout_in_ms)
        pulumi.set(__self__, "is_ssl_enabled", is_ssl_enabled)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "read_timeout_in_ms", read_timeout_in_ms)
        pulumi.set(__self__, "send_timeout_in_ms", send_timeout_in_ms)
        pulumi.set(__self__, "servers", servers)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="authenticationSecretId")
    def authentication_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "authentication_secret_id")

    @property
    @pulumi.getter(name="authenticationSecretVersionNumber")
    def authentication_secret_version_number(self) -> str:
        """
        The version number of the authentication secret to use.
        """
        return pulumi.get(self, "authentication_secret_version_number")

    @property
    @pulumi.getter(name="connectTimeoutInMs")
    def connect_timeout_in_ms(self) -> int:
        """
        Defines the timeout for establishing a connection with the Response Cache.
        """
        return pulumi.get(self, "connect_timeout_in_ms")

    @property
    @pulumi.getter(name="isSslEnabled")
    def is_ssl_enabled(self) -> bool:
        """
        Defines if the connection should be over SSL.
        """
        return pulumi.get(self, "is_ssl_enabled")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInMs")
    def read_timeout_in_ms(self) -> int:
        """
        Defines the timeout for reading data from the Response Cache.
        """
        return pulumi.get(self, "read_timeout_in_ms")

    @property
    @pulumi.getter(name="sendTimeoutInMs")
    def send_timeout_in_ms(self) -> int:
        """
        Defines the timeout for transmitting data to the Response Cache.
        """
        return pulumi.get(self, "send_timeout_in_ms")

    @property
    @pulumi.getter
    def servers(self) -> Sequence['outputs.GetGatewayResponseCacheDetailServerResult']:
        """
        The set of cache store members to connect to. At present only a single server is supported.
        """
        return pulumi.get(self, "servers")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetGatewayResponseCacheDetailServerResult(dict):
    def __init__(__self__, *,
                 host: str,
                 port: int):
        """
        :param str host: Hostname or IP address (IPv4 only) where the cache store is running.
        :param int port: The port the cache store is exposed on.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        Hostname or IP address (IPv4 only) where the cache store is running.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port the cache store is exposed on.
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class GetGatewaysFilterResult(dict):
    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")

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

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


@pulumi.output_type
class GetGatewaysGatewayCollectionResult(dict):
    def __init__(__self__, *,
                 ca_bundles: Sequence['outputs.GetGatewaysGatewayCollectionCaBundleResult'],
                 certificate_id: str,
                 compartment_id: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 endpoint_type: str,
                 freeform_tags: Mapping[str, Any],
                 hostname: str,
                 id: str,
                 ip_addresses: Sequence['outputs.GetGatewaysGatewayCollectionIpAddressResult'],
                 lifecycle_details: str,
                 network_security_group_ids: Sequence[str],
                 response_cache_details: Sequence['outputs.GetGatewaysGatewayCollectionResponseCacheDetailResult'],
                 state: str,
                 subnet_id: str,
                 time_created: str,
                 time_updated: str):
        """
        :param Sequence['GetGatewaysGatewayCollectionCaBundleArgs'] ca_bundles: An array of CA bundles that should be used on the Gateway for TLS validation.
        :param str certificate_id: Filter gateways by the certificate ocid.
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param str endpoint_type: Gateway endpoint type. `PUBLIC` will have a public ip address assigned to it, while `PRIVATE` will only be accessible on a private IP address on the subnet.  Example: `PUBLIC` or `PRIVATE`
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str hostname: The hostname for APIs deployed on the gateway.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param Sequence['GetGatewaysGatewayCollectionIpAddressArgs'] ip_addresses: An array of IP addresses associated with the gateway.
        :param str lifecycle_details: A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        :param Sequence[str] network_security_group_ids: An array of Network Security Groups OCIDs associated with this API Gateway.
        :param Sequence['GetGatewaysGatewayCollectionResponseCacheDetailArgs'] response_cache_details: Base Gateway response cache.
        :param str state: A filter to return only resources that match the given lifecycle state.  Example: `SUCCEEDED`
        :param str subnet_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet in which related resources are created.
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        pulumi.set(__self__, "ca_bundles", ca_bundles)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "endpoint_type", endpoint_type)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "hostname", hostname)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ip_addresses", ip_addresses)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "network_security_group_ids", network_security_group_ids)
        pulumi.set(__self__, "response_cache_details", response_cache_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="caBundles")
    def ca_bundles(self) -> Sequence['outputs.GetGatewaysGatewayCollectionCaBundleResult']:
        """
        An array of CA bundles that should be used on the Gateway for TLS validation.
        """
        return pulumi.get(self, "ca_bundles")

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> str:
        """
        Filter gateways by the certificate ocid.
        """
        return pulumi.get(self, "certificate_id")

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="endpointType")
    def endpoint_type(self) -> str:
        """
        Gateway endpoint type. `PUBLIC` will have a public ip address assigned to it, while `PRIVATE` will only be accessible on a private IP address on the subnet.  Example: `PUBLIC` or `PRIVATE`
        """
        return pulumi.get(self, "endpoint_type")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def hostname(self) -> str:
        """
        The hostname for APIs deployed on the gateway.
        """
        return pulumi.get(self, "hostname")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="ipAddresses")
    def ip_addresses(self) -> Sequence['outputs.GetGatewaysGatewayCollectionIpAddressResult']:
        """
        An array of IP addresses associated with the gateway.
        """
        return pulumi.get(self, "ip_addresses")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="networkSecurityGroupIds")
    def network_security_group_ids(self) -> Sequence[str]:
        """
        An array of Network Security Groups OCIDs associated with this API Gateway.
        """
        return pulumi.get(self, "network_security_group_ids")

    @property
    @pulumi.getter(name="responseCacheDetails")
    def response_cache_details(self) -> Sequence['outputs.GetGatewaysGatewayCollectionResponseCacheDetailResult']:
        """
        Base Gateway response cache.
        """
        return pulumi.get(self, "response_cache_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state.  Example: `SUCCEEDED`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet in which related resources are created.
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetGatewaysGatewayCollectionCaBundleResult(dict):
    def __init__(__self__, *,
                 ca_bundle_id: str,
                 certificate_authority_id: str,
                 type: str):
        """
        :param str ca_bundle_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str certificate_authority_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str type: Type of the Response Cache.
        """
        pulumi.set(__self__, "ca_bundle_id", ca_bundle_id)
        pulumi.set(__self__, "certificate_authority_id", certificate_authority_id)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="caBundleId")
    def ca_bundle_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "ca_bundle_id")

    @property
    @pulumi.getter(name="certificateAuthorityId")
    def certificate_authority_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "certificate_authority_id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetGatewaysGatewayCollectionIpAddressResult(dict):
    def __init__(__self__, *,
                 ip_address: str):
        """
        :param str ip_address: An IP address.
        """
        pulumi.set(__self__, "ip_address", ip_address)

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> str:
        """
        An IP address.
        """
        return pulumi.get(self, "ip_address")


@pulumi.output_type
class GetGatewaysGatewayCollectionResponseCacheDetailResult(dict):
    def __init__(__self__, *,
                 authentication_secret_id: str,
                 authentication_secret_version_number: str,
                 connect_timeout_in_ms: int,
                 is_ssl_enabled: bool,
                 is_ssl_verify_disabled: bool,
                 read_timeout_in_ms: int,
                 send_timeout_in_ms: int,
                 servers: Sequence['outputs.GetGatewaysGatewayCollectionResponseCacheDetailServerResult'],
                 type: str):
        """
        :param str authentication_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        :param str authentication_secret_version_number: The version number of the authentication secret to use.
        :param int connect_timeout_in_ms: Defines the timeout for establishing a connection with the Response Cache.
        :param bool is_ssl_enabled: Defines if the connection should be over SSL.
        :param bool is_ssl_verify_disabled: Defines whether or not to uphold SSL verification.
        :param int read_timeout_in_ms: Defines the timeout for reading data from the Response Cache.
        :param int send_timeout_in_ms: Defines the timeout for transmitting data to the Response Cache.
        :param Sequence['GetGatewaysGatewayCollectionResponseCacheDetailServerArgs'] servers: The set of cache store members to connect to. At present only a single server is supported.
        :param str type: Type of the Response Cache.
        """
        pulumi.set(__self__, "authentication_secret_id", authentication_secret_id)
        pulumi.set(__self__, "authentication_secret_version_number", authentication_secret_version_number)
        pulumi.set(__self__, "connect_timeout_in_ms", connect_timeout_in_ms)
        pulumi.set(__self__, "is_ssl_enabled", is_ssl_enabled)
        pulumi.set(__self__, "is_ssl_verify_disabled", is_ssl_verify_disabled)
        pulumi.set(__self__, "read_timeout_in_ms", read_timeout_in_ms)
        pulumi.set(__self__, "send_timeout_in_ms", send_timeout_in_ms)
        pulumi.set(__self__, "servers", servers)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="authenticationSecretId")
    def authentication_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Vault Service secret resource.
        """
        return pulumi.get(self, "authentication_secret_id")

    @property
    @pulumi.getter(name="authenticationSecretVersionNumber")
    def authentication_secret_version_number(self) -> str:
        """
        The version number of the authentication secret to use.
        """
        return pulumi.get(self, "authentication_secret_version_number")

    @property
    @pulumi.getter(name="connectTimeoutInMs")
    def connect_timeout_in_ms(self) -> int:
        """
        Defines the timeout for establishing a connection with the Response Cache.
        """
        return pulumi.get(self, "connect_timeout_in_ms")

    @property
    @pulumi.getter(name="isSslEnabled")
    def is_ssl_enabled(self) -> bool:
        """
        Defines if the connection should be over SSL.
        """
        return pulumi.get(self, "is_ssl_enabled")

    @property
    @pulumi.getter(name="isSslVerifyDisabled")
    def is_ssl_verify_disabled(self) -> bool:
        """
        Defines whether or not to uphold SSL verification.
        """
        return pulumi.get(self, "is_ssl_verify_disabled")

    @property
    @pulumi.getter(name="readTimeoutInMs")
    def read_timeout_in_ms(self) -> int:
        """
        Defines the timeout for reading data from the Response Cache.
        """
        return pulumi.get(self, "read_timeout_in_ms")

    @property
    @pulumi.getter(name="sendTimeoutInMs")
    def send_timeout_in_ms(self) -> int:
        """
        Defines the timeout for transmitting data to the Response Cache.
        """
        return pulumi.get(self, "send_timeout_in_ms")

    @property
    @pulumi.getter
    def servers(self) -> Sequence['outputs.GetGatewaysGatewayCollectionResponseCacheDetailServerResult']:
        """
        The set of cache store members to connect to. At present only a single server is supported.
        """
        return pulumi.get(self, "servers")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Type of the Response Cache.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetGatewaysGatewayCollectionResponseCacheDetailServerResult(dict):
    def __init__(__self__, *,
                 host: str,
                 port: int):
        """
        :param str host: Hostname or IP address (IPv4 only) where the cache store is running.
        :param int port: The port the cache store is exposed on.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        Hostname or IP address (IPv4 only) where the cache store is running.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port the cache store is exposed on.
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class GetSubscriberClientResult(dict):
    def __init__(__self__, *,
                 name: str,
                 token: str):
        """
        :param str name: The name of the client. Must be unique within a subscriber.
        :param str token: The token for the client. Must be unique within a tenancy.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "token", token)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the client. Must be unique within a subscriber.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def token(self) -> str:
        """
        The token for the client. Must be unique within a tenancy.
        """
        return pulumi.get(self, "token")


@pulumi.output_type
class GetSubscribersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the client. Must be unique within a subscriber.
        """
        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:
        """
        The name of the client. Must be unique within a subscriber.
        """
        return pulumi.get(self, "name")

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

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


@pulumi.output_type
class GetSubscribersSubscriberCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscribersSubscriberCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscribersSubscriberCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscribersSubscriberCollectionItemResult(dict):
    def __init__(__self__, *,
                 clients: Sequence['outputs.GetSubscribersSubscriberCollectionItemClientResult'],
                 compartment_id: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 freeform_tags: Mapping[str, Any],
                 id: str,
                 lifecycle_details: str,
                 state: str,
                 time_created: str,
                 time_updated: str,
                 usage_plans: Sequence[str]):
        """
        :param Sequence['GetSubscribersSubscriberCollectionItemClientArgs'] clients: The clients belonging to this subscriber.
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        :param str lifecycle_details: A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        :param str state: A filter to return only resources that match the given lifecycle state. Example: `ACTIVE`
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        :param Sequence[str] usage_plans: An array of [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)s of usage plan resources.
        """
        pulumi.set(__self__, "clients", clients)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)
        pulumi.set(__self__, "usage_plans", usage_plans)

    @property
    @pulumi.getter
    def clients(self) -> Sequence['outputs.GetSubscribersSubscriberCollectionItemClientResult']:
        """
        The clients belonging to this subscriber.
        """
        return pulumi.get(self, "clients")

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state. Example: `ACTIVE`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")

    @property
    @pulumi.getter(name="usagePlans")
    def usage_plans(self) -> Sequence[str]:
        """
        An array of [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)s of usage plan resources.
        """
        return pulumi.get(self, "usage_plans")


@pulumi.output_type
class GetSubscribersSubscriberCollectionItemClientResult(dict):
    def __init__(__self__, *,
                 name: str,
                 token: str):
        """
        :param str name: The name of the client. Must be unique within a subscriber.
        :param str token: The token for the client. Must be unique within a tenancy.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "token", token)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the client. Must be unique within a subscriber.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def token(self) -> str:
        """
        The token for the client. Must be unique within a tenancy.
        """
        return pulumi.get(self, "token")


@pulumi.output_type
class GetUsagePlanEntitlementResult(dict):
    def __init__(__self__, *,
                 description: str,
                 name: str,
                 quotas: Sequence['outputs.GetUsagePlanEntitlementQuotaResult'],
                 rate_limits: Sequence['outputs.GetUsagePlanEntitlementRateLimitResult'],
                 targets: Sequence['outputs.GetUsagePlanEntitlementTargetResult']):
        """
        :param str description: A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        :param str name: An entitlement name, unique within a usage plan.
        :param Sequence['GetUsagePlanEntitlementQuotaArgs'] quotas: Quota policy for a usage plan.
        :param Sequence['GetUsagePlanEntitlementRateLimitArgs'] rate_limits: Rate-limiting policy for a usage plan.
        :param Sequence['GetUsagePlanEntitlementTargetArgs'] targets: A collection of targeted deployments that the entitlement will be applied to.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "quotas", quotas)
        pulumi.set(__self__, "rate_limits", rate_limits)
        pulumi.set(__self__, "targets", targets)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        An entitlement name, unique within a usage plan.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def quotas(self) -> Sequence['outputs.GetUsagePlanEntitlementQuotaResult']:
        """
        Quota policy for a usage plan.
        """
        return pulumi.get(self, "quotas")

    @property
    @pulumi.getter(name="rateLimits")
    def rate_limits(self) -> Sequence['outputs.GetUsagePlanEntitlementRateLimitResult']:
        """
        Rate-limiting policy for a usage plan.
        """
        return pulumi.get(self, "rate_limits")

    @property
    @pulumi.getter
    def targets(self) -> Sequence['outputs.GetUsagePlanEntitlementTargetResult']:
        """
        A collection of targeted deployments that the entitlement will be applied to.
        """
        return pulumi.get(self, "targets")


@pulumi.output_type
class GetUsagePlanEntitlementQuotaResult(dict):
    def __init__(__self__, *,
                 operation_on_breach: str,
                 reset_policy: str,
                 unit: str,
                 value: int):
        """
        :param str operation_on_breach: What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        :param str reset_policy: The policy that controls when quotas will reset. Example: `CALENDAR`
        :param str unit: The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "operation_on_breach", operation_on_breach)
        pulumi.set(__self__, "reset_policy", reset_policy)
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="operationOnBreach")
    def operation_on_breach(self) -> str:
        """
        What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        """
        return pulumi.get(self, "operation_on_breach")

    @property
    @pulumi.getter(name="resetPolicy")
    def reset_policy(self) -> str:
        """
        The policy that controls when quotas will reset. Example: `CALENDAR`
        """
        return pulumi.get(self, "reset_policy")

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetUsagePlanEntitlementRateLimitResult(dict):
    def __init__(__self__, *,
                 unit: str,
                 value: int):
        """
        :param str unit: The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetUsagePlanEntitlementTargetResult(dict):
    def __init__(__self__, *,
                 deployment_id: str):
        """
        :param str deployment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        pulumi.set(__self__, "deployment_id", deployment_id)

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        return pulumi.get(self, "deployment_id")


@pulumi.output_type
class GetUsagePlansFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: An entitlement name, unique within a usage plan.
        """
        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:
        """
        An entitlement name, unique within a usage plan.
        """
        return pulumi.get(self, "name")

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

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


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetUsagePlansUsagePlanCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetUsagePlansUsagePlanCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 defined_tags: Mapping[str, Any],
                 display_name: str,
                 entitlements: Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementResult'],
                 freeform_tags: Mapping[str, Any],
                 id: str,
                 lifecycle_details: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str compartment_id: The ocid of the compartment in which to list resources.
        :param Mapping[str, Any] defined_tags: Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        :param str display_name: A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        :param Sequence['GetUsagePlansUsagePlanCollectionItemEntitlementArgs'] entitlements: A collection of entitlements currently assigned to the usage plan.
        :param Mapping[str, Any] freeform_tags: Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a usage plan resource.
        :param str lifecycle_details: A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        :param str state: A filter to return only resources that match the given lifecycle state. Example: `ACTIVE`
        :param str time_created: The time this resource was created. An RFC3339 formatted datetime string.
        :param str time_updated: The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "defined_tags", defined_tags)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "entitlements", entitlements)
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The ocid of the compartment in which to list resources.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A user-friendly name. Does not have to be unique, and it's changeable.  Example: `My new resource`
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def entitlements(self) -> Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementResult']:
        """
        A collection of entitlements currently assigned to the usage plan.
        """
        return pulumi.get(self, "entitlements")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a usage plan resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        A filter to return only resources that match the given lifecycle state. Example: `ACTIVE`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The time this resource was created. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The time this resource was last updated. An RFC3339 formatted datetime string.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionItemEntitlementResult(dict):
    def __init__(__self__, *,
                 description: str,
                 name: str,
                 quotas: Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementQuotaResult'],
                 rate_limits: Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementRateLimitResult'],
                 targets: Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementTargetResult']):
        """
        :param str description: A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        :param str name: An entitlement name, unique within a usage plan.
        :param Sequence['GetUsagePlansUsagePlanCollectionItemEntitlementQuotaArgs'] quotas: Quota policy for a usage plan.
        :param Sequence['GetUsagePlansUsagePlanCollectionItemEntitlementRateLimitArgs'] rate_limits: Rate-limiting policy for a usage plan.
        :param Sequence['GetUsagePlansUsagePlanCollectionItemEntitlementTargetArgs'] targets: A collection of targeted deployments that the entitlement will be applied to.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "quotas", quotas)
        pulumi.set(__self__, "rate_limits", rate_limits)
        pulumi.set(__self__, "targets", targets)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        A user-friendly description. To provide some insight about the resource. Avoid entering confidential information.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        An entitlement name, unique within a usage plan.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def quotas(self) -> Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementQuotaResult']:
        """
        Quota policy for a usage plan.
        """
        return pulumi.get(self, "quotas")

    @property
    @pulumi.getter(name="rateLimits")
    def rate_limits(self) -> Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementRateLimitResult']:
        """
        Rate-limiting policy for a usage plan.
        """
        return pulumi.get(self, "rate_limits")

    @property
    @pulumi.getter
    def targets(self) -> Sequence['outputs.GetUsagePlansUsagePlanCollectionItemEntitlementTargetResult']:
        """
        A collection of targeted deployments that the entitlement will be applied to.
        """
        return pulumi.get(self, "targets")


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionItemEntitlementQuotaResult(dict):
    def __init__(__self__, *,
                 operation_on_breach: str,
                 reset_policy: str,
                 unit: str,
                 value: int):
        """
        :param str operation_on_breach: What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        :param str reset_policy: The policy that controls when quotas will reset. Example: `CALENDAR`
        :param str unit: The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "operation_on_breach", operation_on_breach)
        pulumi.set(__self__, "reset_policy", reset_policy)
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="operationOnBreach")
    def operation_on_breach(self) -> str:
        """
        What the usage plan will do when a quota is breached: `REJECT` will allow no further requests `ALLOW` will continue to allow further requests
        """
        return pulumi.get(self, "operation_on_breach")

    @property
    @pulumi.getter(name="resetPolicy")
    def reset_policy(self) -> str:
        """
        The policy that controls when quotas will reset. Example: `CALENDAR`
        """
        return pulumi.get(self, "reset_policy")

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionItemEntitlementRateLimitResult(dict):
    def __init__(__self__, *,
                 unit: str,
                 value: int):
        """
        :param str unit: The unit of time over which rate limits are calculated. Example: `SECOND`
        :param int value: The number of requests that can be made per time period.
        """
        pulumi.set(__self__, "unit", unit)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        The unit of time over which rate limits are calculated. Example: `SECOND`
        """
        return pulumi.get(self, "unit")

    @property
    @pulumi.getter
    def value(self) -> int:
        """
        The number of requests that can be made per time period.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetUsagePlansUsagePlanCollectionItemEntitlementTargetResult(dict):
    def __init__(__self__, *,
                 deployment_id: str):
        """
        :param str deployment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        pulumi.set(__self__, "deployment_id", deployment_id)

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a deployment resource.
        """
        return pulumi.get(self, "deployment_id")


