"use strict";
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Deployment = void 0;
const pulumi = __importStar(require("@pulumi/pulumi"));
const utilities = __importStar(require("../utilities"));
/**
 * This resource provides the Deployment resource in Oracle Cloud Infrastructure API Gateway service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/api-gateway/latest/Deployment
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/api_gateway
 *
 * Creates a new deployment.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testDeployment = new oci.apigateway.Deployment("test_deployment", {
 *     compartmentId: compartmentId,
 *     gatewayId: testGateway.id,
 *     pathPrefix: deploymentPathPrefix,
 *     specification: {
 *         loggingPolicies: {
 *             accessLog: {
 *                 isEnabled: deploymentSpecificationLoggingPoliciesAccessLogIsEnabled === "true",
 *             },
 *             executionLog: {
 *                 isEnabled: deploymentSpecificationLoggingPoliciesExecutionLogIsEnabled === "true",
 *                 logLevel: deploymentSpecificationLoggingPoliciesExecutionLogLogLevel,
 *             },
 *         },
 *         requestPolicies: {
 *             authentication: {
 *                 type: deploymentSpecificationRequestPoliciesAuthenticationType,
 *                 audiences: deploymentSpecificationRequestPoliciesAuthenticationAudiences,
 *                 cacheKeys: deploymentSpecificationRequestPoliciesAuthenticationCacheKey,
 *                 functionId: testFunction.id,
 *                 isAnonymousAccessAllowed: deploymentSpecificationRequestPoliciesAuthenticationIsAnonymousAccessAllowed === "true",
 *                 issuers: deploymentSpecificationRequestPoliciesAuthenticationIssuers,
 *                 maxClockSkewInSeconds: deploymentSpecificationRequestPoliciesAuthenticationMaxClockSkewInSeconds,
 *                 parameters: deploymentSpecificationRequestPoliciesAuthenticationParameters,
 *                 publicKeys: {
 *                     type: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysType,
 *                     isSslVerifyDisabled: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysIsSslVerifyDisabled === "true",
 *                     keys: [{
 *                         format: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysFormat,
 *                         alg: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysAlg,
 *                         e: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysE,
 *                         key: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysKey,
 *                         keyOps: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysKeyOps,
 *                         kid: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysKid,
 *                         kty: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysKty,
 *                         n: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysN,
 *                         use: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysKeysUse,
 *                     }],
 *                     maxCacheDurationInHours: Number(deploymentSpecificationRequestPoliciesAuthenticationPublicKeysMaxCacheDurationInHours),
 *                     uri: deploymentSpecificationRequestPoliciesAuthenticationPublicKeysUri,
 *                 },
 *                 tokenAuthScheme: deploymentSpecificationRequestPoliciesAuthenticationTokenAuthScheme,
 *                 tokenHeader: deploymentSpecificationRequestPoliciesAuthenticationTokenHeader,
 *                 tokenQueryParam: deploymentSpecificationRequestPoliciesAuthenticationTokenQueryParam,
 *                 validationFailurePolicy: {
 *                     type: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyType,
 *                     clientDetails: {
 *                         type: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetailsType,
 *                         clientId: testClient.id,
 *                         clientSecretId: testSecret.id,
 *                         clientSecretVersionNumber: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyClientDetailsClientSecretVersionNumber,
 *                     },
 *                     fallbackRedirectPath: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyFallbackRedirectPath,
 *                     logoutPath: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyLogoutPath,
 *                     maxExpiryDurationInHours: Number(deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyMaxExpiryDurationInHours),
 *                     responseCode: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseCode,
 *                     responseHeaderTransformations: {
 *                         filterHeaders: {
 *                             items: [{
 *                                 name: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItemsName,
 *                             }],
 *                             type: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsFilterHeadersType,
 *                         },
 *                         renameHeaders: {
 *                             items: [{
 *                                 from: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemsFrom,
 *                                 to: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemsTo,
 *                             }],
 *                         },
 *                         setHeaders: {
 *                             items: [{
 *                                 ifExists: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsIfExists,
 *                                 name: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsName,
 *                                 values: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsValues,
 *                             }],
 *                         },
 *                     },
 *                     responseMessage: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseMessage,
 *                     responseType: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyResponseType,
 *                     scopes: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyScopes,
 *                     sourceUriDetails: {
 *                         type: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetailsType,
 *                         uri: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicySourceUriDetailsUri,
 *                     },
 *                     useCookiesForIntermediateSteps: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyUseCookiesForIntermediateSteps === "true",
 *                     useCookiesForSession: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyUseCookiesForSession === "true",
 *                     usePkce: deploymentSpecificationRequestPoliciesAuthenticationValidationFailurePolicyUsePkce === "true",
 *                 },
 *                 validationPolicy: {
 *                     type: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyType,
 *                     additionalValidationPolicy: {
 *                         audiences: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyAudiences,
 *                         issuers: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyIssuers,
 *                         verifyClaims: [{
 *                             isRequired: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimsIsRequired === "true",
 *                             key: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimsKey,
 *                             values: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyAdditionalValidationPolicyVerifyClaimsValues,
 *                         }],
 *                     },
 *                     clientDetails: {
 *                         type: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetailsType,
 *                         clientId: testClient.id,
 *                         clientSecretId: testSecret.id,
 *                         clientSecretVersionNumber: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyClientDetailsClientSecretVersionNumber,
 *                     },
 *                     isSslVerifyDisabled: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyIsSslVerifyDisabled === "true",
 *                     keys: [{
 *                         format: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysFormat,
 *                         alg: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysAlg,
 *                         e: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysE,
 *                         key: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysKey,
 *                         keyOps: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysKeyOps,
 *                         kid: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysKid,
 *                         kty: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysKty,
 *                         n: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysN,
 *                         use: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyKeysUse,
 *                     }],
 *                     maxCacheDurationInHours: Number(deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyMaxCacheDurationInHours),
 *                     sourceUriDetails: {
 *                         type: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetailsType,
 *                         uri: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicySourceUriDetailsUri,
 *                     },
 *                     uri: deploymentSpecificationRequestPoliciesAuthenticationValidationPolicyUri,
 *                 },
 *                 verifyClaims: [{
 *                     isRequired: deploymentSpecificationRequestPoliciesAuthenticationVerifyClaimsIsRequired === "true",
 *                     key: deploymentSpecificationRequestPoliciesAuthenticationVerifyClaimsKey,
 *                     values: deploymentSpecificationRequestPoliciesAuthenticationVerifyClaimsValues,
 *                 }],
 *             },
 *             cors: {
 *                 allowedOrigins: deploymentSpecificationRequestPoliciesCorsAllowedOrigins,
 *                 allowedHeaders: deploymentSpecificationRequestPoliciesCorsAllowedHeaders,
 *                 allowedMethods: deploymentSpecificationRequestPoliciesCorsAllowedMethods,
 *                 exposedHeaders: deploymentSpecificationRequestPoliciesCorsExposedHeaders,
 *                 isAllowCredentialsEnabled: deploymentSpecificationRequestPoliciesCorsIsAllowCredentialsEnabled === "true",
 *                 maxAgeInSeconds: Number(deploymentSpecificationRequestPoliciesCorsMaxAgeInSeconds),
 *             },
 *             dynamicAuthentication: {
 *                 authenticationServers: [{
 *                     authenticationServerDetail: {
 *                         type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailType,
 *                         audiences: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailAudiences,
 *                         functionId: testFunction.id,
 *                         isAnonymousAccessAllowed: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailIsAnonymousAccessAllowed === "true",
 *                         issuers: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailIssuers,
 *                         maxClockSkewInSeconds: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailMaxClockSkewInSeconds,
 *                         publicKeys: {
 *                             type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysType,
 *                             isSslVerifyDisabled: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysIsSslVerifyDisabled === "true",
 *                             keys: [{
 *                                 format: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysFormat,
 *                                 alg: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysAlg,
 *                                 e: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysE,
 *                                 key: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysKey,
 *                                 keyOps: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysKeyOps,
 *                                 kid: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysKid,
 *                                 kty: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysKty,
 *                                 n: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysN,
 *                                 use: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysKeysUse,
 *                             }],
 *                             maxCacheDurationInHours: Number(deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysMaxCacheDurationInHours),
 *                             uri: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailPublicKeysUri,
 *                         },
 *                         tokenAuthScheme: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailTokenAuthScheme,
 *                         tokenHeader: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailTokenHeader,
 *                         tokenQueryParam: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailTokenQueryParam,
 *                         validationFailurePolicy: {
 *                             type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyType,
 *                             clientDetails: {
 *                                 type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyClientDetailsType,
 *                                 clientId: testClient.id,
 *                                 clientSecretId: testSecret.id,
 *                                 clientSecretVersionNumber: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyClientDetailsClientSecretVersionNumber,
 *                             },
 *                             fallbackRedirectPath: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyFallbackRedirectPath,
 *                             logoutPath: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyLogoutPath,
 *                             maxExpiryDurationInHours: Number(deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyMaxExpiryDurationInHours),
 *                             responseCode: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseCode,
 *                             responseHeaderTransformations: {
 *                                 filterHeaders: {
 *                                     items: [{
 *                                         name: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersItemsName,
 *                                     }],
 *                                     type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsFilterHeadersType,
 *                                 },
 *                                 renameHeaders: {
 *                                     items: [{
 *                                         from: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemsFrom,
 *                                         to: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsRenameHeadersItemsTo,
 *                                     }],
 *                                 },
 *                                 setHeaders: {
 *                                     items: [{
 *                                         ifExists: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsIfExists,
 *                                         name: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsName,
 *                                         values: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseHeaderTransformationsSetHeadersItemsValues,
 *                                     }],
 *                                 },
 *                             },
 *                             responseMessage: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseMessage,
 *                             responseType: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyResponseType,
 *                             scopes: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyScopes,
 *                             sourceUriDetails: {
 *                                 type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicySourceUriDetailsType,
 *                                 uri: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicySourceUriDetailsUri,
 *                             },
 *                             useCookiesForIntermediateSteps: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyUseCookiesForIntermediateSteps === "true",
 *                             useCookiesForSession: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyUseCookiesForSession === "true",
 *                             usePkce: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationFailurePolicyUsePkce === "true",
 *                         },
 *                         validationPolicy: {
 *                             type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyType,
 *                             additionalValidationPolicy: {
 *                                 audiences: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyAudiences,
 *                                 issuers: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyIssuers,
 *                                 verifyClaims: [{
 *                                     isRequired: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimsIsRequired === "true",
 *                                     key: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimsKey,
 *                                     values: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyAdditionalValidationPolicyVerifyClaimsValues,
 *                                 }],
 *                             },
 *                             clientDetails: {
 *                                 type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyClientDetailsType,
 *                                 clientId: testClient.id,
 *                                 clientSecretId: testSecret.id,
 *                                 clientSecretVersionNumber: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyClientDetailsClientSecretVersionNumber,
 *                             },
 *                             isSslVerifyDisabled: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyIsSslVerifyDisabled === "true",
 *                             keys: [{
 *                                 format: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysFormat,
 *                                 alg: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysAlg,
 *                                 e: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysE,
 *                                 key: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysKey,
 *                                 keyOps: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysKeyOps,
 *                                 kid: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysKid,
 *                                 kty: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysKty,
 *                                 n: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysN,
 *                                 use: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyKeysUse,
 *                             }],
 *                             maxCacheDurationInHours: Number(deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyMaxCacheDurationInHours),
 *                             sourceUriDetails: {
 *                                 type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicySourceUriDetailsType,
 *                                 uri: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicySourceUriDetailsUri,
 *                             },
 *                             uri: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailValidationPolicyUri,
 *                         },
 *                         verifyClaims: [{
 *                             isRequired: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailVerifyClaimsIsRequired === "true",
 *                             key: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailVerifyClaimsKey,
 *                             values: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersAuthenticationServerDetailVerifyClaimsValues,
 *                         }],
 *                     },
 *                     key: {
 *                         name: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyName,
 *                         expression: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyExpression,
 *                         isDefault: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyIsDefault === "true",
 *                         type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyType,
 *                         values: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyValues,
 *                     },
 *                 }],
 *                 selectionSource: {
 *                     selector: deploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSourceSelector,
 *                     type: deploymentSpecificationRequestPoliciesDynamicAuthenticationSelectionSourceType,
 *                 },
 *             },
 *             mutualTls: {
 *                 allowedSans: deploymentSpecificationRequestPoliciesMutualTlsAllowedSans,
 *                 isVerifiedCertificateRequired: deploymentSpecificationRequestPoliciesMutualTlsIsVerifiedCertificateRequired === "true",
 *             },
 *             rateLimiting: {
 *                 rateInRequestsPerSecond: Number(deploymentSpecificationRequestPoliciesRateLimitingRateInRequestsPerSecond),
 *                 rateKey: deploymentSpecificationRequestPoliciesRateLimitingRateKey,
 *             },
 *             usagePlans: {
 *                 tokenLocations: deploymentSpecificationRequestPoliciesUsagePlansTokenLocations,
 *             },
 *         },
 *         routes: [{
 *             backend: {
 *                 type: deploymentSpecificationRoutesBackendType,
 *                 allowedPostLogoutUris: deploymentSpecificationRoutesBackendAllowedPostLogoutUris,
 *                 body: deploymentSpecificationRoutesBackendBody,
 *                 connectTimeoutInSeconds: deploymentSpecificationRoutesBackendConnectTimeoutInSeconds,
 *                 functionId: testFunction.id,
 *                 headers: [{
 *                     name: deploymentSpecificationRoutesBackendHeadersName,
 *                     value: deploymentSpecificationRoutesBackendHeadersValue,
 *                 }],
 *                 isSslVerifyDisabled: deploymentSpecificationRoutesBackendIsSslVerifyDisabled === "true",
 *                 postLogoutState: deploymentSpecificationRoutesBackendPostLogoutState,
 *                 readTimeoutInSeconds: deploymentSpecificationRoutesBackendReadTimeoutInSeconds,
 *                 routingBackends: [{
 *                     backend: {
 *                         type: deploymentSpecificationRoutesBackendRoutingBackendsBackendType,
 *                         body: deploymentSpecificationRoutesBackendRoutingBackendsBackendBody,
 *                         connectTimeoutInSeconds: deploymentSpecificationRoutesBackendRoutingBackendsBackendConnectTimeoutInSeconds,
 *                         functionId: testFunction.id,
 *                         headers: [{
 *                             name: deploymentSpecificationRoutesBackendRoutingBackendsBackendHeadersName,
 *                             value: deploymentSpecificationRoutesBackendRoutingBackendsBackendHeadersValue,
 *                         }],
 *                         isSslVerifyDisabled: deploymentSpecificationRoutesBackendRoutingBackendsBackendIsSslVerifyDisabled === "true",
 *                         readTimeoutInSeconds: deploymentSpecificationRoutesBackendRoutingBackendsBackendReadTimeoutInSeconds,
 *                         sendTimeoutInSeconds: deploymentSpecificationRoutesBackendRoutingBackendsBackendSendTimeoutInSeconds,
 *                         status: Number(deploymentSpecificationRoutesBackendRoutingBackendsBackendStatus),
 *                         url: deploymentSpecificationRoutesBackendRoutingBackendsBackendUrl,
 *                     },
 *                     key: {
 *                         name: deploymentSpecificationRoutesBackendRoutingBackendsKeyName,
 *                         type: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyType,
 *                         expression: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyExpression,
 *                         isDefault: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyIsDefault === "true",
 *                         values: deploymentSpecificationRequestPoliciesDynamicAuthenticationAuthenticationServersKeyValues,
 *                     },
 *                 }],
 *                 selectionSource: {
 *                     selector: deploymentSpecificationRoutesBackendSelectionSourceSelector,
 *                     type: deploymentSpecificationRoutesBackendSelectionSourceType,
 *                 },
 *                 sendTimeoutInSeconds: deploymentSpecificationRoutesBackendSendTimeoutInSeconds,
 *                 status: Number(deploymentSpecificationRoutesBackendStatus),
 *                 url: deploymentSpecificationRoutesBackendUrl,
 *             },
 *             path: deploymentSpecificationRoutesPath,
 *             loggingPolicies: {
 *                 accessLog: {
 *                     isEnabled: deploymentSpecificationRoutesLoggingPoliciesAccessLogIsEnabled === "true",
 *                 },
 *                 executionLog: {
 *                     isEnabled: deploymentSpecificationRoutesLoggingPoliciesExecutionLogIsEnabled === "true",
 *                     logLevel: deploymentSpecificationRoutesLoggingPoliciesExecutionLogLogLevel,
 *                 },
 *             },
 *             methods: deploymentSpecificationRoutesMethods,
 *             requestPolicies: {
 *                 authorization: {
 *                     allowedScopes: deploymentSpecificationRoutesRequestPoliciesAuthorizationAllowedScope,
 *                     type: deploymentSpecificationRoutesRequestPoliciesAuthorizationType,
 *                 },
 *                 bodyValidation: {
 *                     contents: [{
 *                         mediaType: deploymentSpecificationRoutesRequestPoliciesBodyValidationContentMediaType,
 *                         validationType: deploymentSpecificationRoutesRequestPoliciesBodyValidationContentValidationType,
 *                     }],
 *                     required: deploymentSpecificationRoutesRequestPoliciesBodyValidationRequired === "true",
 *                     validationMode: deploymentSpecificationRoutesRequestPoliciesBodyValidationValidationMode,
 *                 },
 *                 cors: {
 *                     allowedOrigins: deploymentSpecificationRoutesRequestPoliciesCorsAllowedOrigins,
 *                     allowedHeaders: deploymentSpecificationRoutesRequestPoliciesCorsAllowedHeaders,
 *                     allowedMethods: deploymentSpecificationRoutesRequestPoliciesCorsAllowedMethods,
 *                     exposedHeaders: deploymentSpecificationRoutesRequestPoliciesCorsExposedHeaders,
 *                     isAllowCredentialsEnabled: deploymentSpecificationRoutesRequestPoliciesCorsIsAllowCredentialsEnabled === "true",
 *                     maxAgeInSeconds: Number(deploymentSpecificationRoutesRequestPoliciesCorsMaxAgeInSeconds),
 *                 },
 *                 headerTransformations: {
 *                     filterHeaders: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsFilterHeadersItemsName,
 *                         }],
 *                         type: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsFilterHeadersType,
 *                     },
 *                     renameHeaders: {
 *                         items: [{
 *                             from: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsRenameHeadersItemsFrom,
 *                             to: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsRenameHeadersItemsTo,
 *                         }],
 *                     },
 *                     setHeaders: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsSetHeadersItemsName,
 *                             values: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsSetHeadersItemsValues,
 *                             ifExists: deploymentSpecificationRoutesRequestPoliciesHeaderTransformationsSetHeadersItemsIfExists,
 *                         }],
 *                     },
 *                 },
 *                 headerValidations: {
 *                     headers: [{
 *                         name: deploymentSpecificationRoutesRequestPoliciesHeaderValidationsHeadersName,
 *                         required: deploymentSpecificationRoutesRequestPoliciesHeaderValidationsHeadersRequired === "true",
 *                     }],
 *                     validationMode: deploymentSpecificationRoutesRequestPoliciesHeaderValidationsValidationMode,
 *                 },
 *                 queryParameterTransformations: {
 *                     filterQueryParameters: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsFilterQueryParametersItemsName,
 *                         }],
 *                         type: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsFilterQueryParametersType,
 *                     },
 *                     renameQueryParameters: {
 *                         items: [{
 *                             from: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsRenameQueryParametersItemsFrom,
 *                             to: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsRenameQueryParametersItemsTo,
 *                         }],
 *                     },
 *                     setQueryParameters: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsSetQueryParametersItemsName,
 *                             values: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsSetQueryParametersItemsValues,
 *                             ifExists: deploymentSpecificationRoutesRequestPoliciesQueryParameterTransformationsSetQueryParametersItemsIfExists,
 *                         }],
 *                     },
 *                 },
 *                 queryParameterValidations: {
 *                     parameters: [{
 *                         name: deploymentSpecificationRoutesRequestPoliciesQueryParameterValidationsParametersName,
 *                         required: deploymentSpecificationRoutesRequestPoliciesQueryParameterValidationsParametersRequired === "true",
 *                     }],
 *                     validationMode: deploymentSpecificationRoutesRequestPoliciesQueryParameterValidationsValidationMode,
 *                 },
 *                 responseCacheLookup: {
 *                     type: deploymentSpecificationRoutesRequestPoliciesResponseCacheLookupType,
 *                     cacheKeyAdditions: deploymentSpecificationRoutesRequestPoliciesResponseCacheLookupCacheKeyAdditions,
 *                     isEnabled: deploymentSpecificationRoutesRequestPoliciesResponseCacheLookupIsEnabled === "true",
 *                     isPrivateCachingEnabled: deploymentSpecificationRoutesRequestPoliciesResponseCacheLookupIsPrivateCachingEnabled === "true",
 *                 },
 *             },
 *             responsePolicies: {
 *                 headerTransformations: {
 *                     filterHeaders: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsFilterHeadersItemsName,
 *                         }],
 *                         type: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsFilterHeadersType,
 *                     },
 *                     renameHeaders: {
 *                         items: [{
 *                             from: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsRenameHeadersItemsFrom,
 *                             to: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsRenameHeadersItemsTo,
 *                         }],
 *                     },
 *                     setHeaders: {
 *                         items: [{
 *                             name: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsSetHeadersItemsName,
 *                             values: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsSetHeadersItemsValues,
 *                             ifExists: deploymentSpecificationRoutesResponsePoliciesHeaderTransformationsSetHeadersItemsIfExists,
 *                         }],
 *                     },
 *                 },
 *                 responseCacheStore: {
 *                     timeToLiveInSeconds: Number(deploymentSpecificationRoutesResponsePoliciesResponseCacheStoreTimeToLiveInSeconds),
 *                     type: deploymentSpecificationRoutesResponsePoliciesResponseCacheStoreType,
 *                 },
 *             },
 *         }],
 *     },
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: deploymentDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     locks: [{
 *         type: deploymentLocksType,
 *         message: deploymentLocksMessage,
 *     }],
 * });
 * ```
 *
 * ## Import
 *
 * Deployments can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:ApiGateway/deployment:Deployment test_deployment "id"
 * ```
 */
class Deployment extends pulumi.CustomResource {
    /**
     * Get an existing Deployment resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name, id, state, opts) {
        return new Deployment(name, state, { ...opts, id: id });
    }
    /** @internal */
    static __pulumiType = 'oci:ApiGateway/deployment:Deployment';
    /**
     * Returns true if the given object is an instance of Deployment.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj) {
        if (obj === undefined || obj === null) {
            return false;
        }
        return obj['__pulumiType'] === Deployment.__pulumiType;
    }
    constructor(name, argsOrState, opts) {
        let resourceInputs = {};
        opts = opts || {};
        if (opts.id) {
            const state = argsOrState;
            resourceInputs["compartmentId"] = state?.compartmentId;
            resourceInputs["definedTags"] = state?.definedTags;
            resourceInputs["displayName"] = state?.displayName;
            resourceInputs["endpoint"] = state?.endpoint;
            resourceInputs["freeformTags"] = state?.freeformTags;
            resourceInputs["gatewayId"] = state?.gatewayId;
            resourceInputs["isLockOverride"] = state?.isLockOverride;
            resourceInputs["lifecycleDetails"] = state?.lifecycleDetails;
            resourceInputs["locks"] = state?.locks;
            resourceInputs["pathPrefix"] = state?.pathPrefix;
            resourceInputs["specification"] = state?.specification;
            resourceInputs["state"] = state?.state;
            resourceInputs["systemTags"] = state?.systemTags;
            resourceInputs["timeCreated"] = state?.timeCreated;
            resourceInputs["timeUpdated"] = state?.timeUpdated;
        }
        else {
            const args = argsOrState;
            if (args?.compartmentId === undefined && !opts.urn) {
                throw new Error("Missing required property 'compartmentId'");
            }
            if (args?.gatewayId === undefined && !opts.urn) {
                throw new Error("Missing required property 'gatewayId'");
            }
            if (args?.pathPrefix === undefined && !opts.urn) {
                throw new Error("Missing required property 'pathPrefix'");
            }
            if (args?.specification === undefined && !opts.urn) {
                throw new Error("Missing required property 'specification'");
            }
            resourceInputs["compartmentId"] = args?.compartmentId;
            resourceInputs["definedTags"] = args?.definedTags;
            resourceInputs["displayName"] = args?.displayName;
            resourceInputs["freeformTags"] = args?.freeformTags;
            resourceInputs["gatewayId"] = args?.gatewayId;
            resourceInputs["isLockOverride"] = args?.isLockOverride;
            resourceInputs["locks"] = args?.locks;
            resourceInputs["pathPrefix"] = args?.pathPrefix;
            resourceInputs["specification"] = args?.specification;
            resourceInputs["endpoint"] = undefined /*out*/;
            resourceInputs["lifecycleDetails"] = undefined /*out*/;
            resourceInputs["state"] = undefined /*out*/;
            resourceInputs["systemTags"] = undefined /*out*/;
            resourceInputs["timeCreated"] = undefined /*out*/;
            resourceInputs["timeUpdated"] = undefined /*out*/;
        }
        opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
        super(Deployment.__pulumiType, name, resourceInputs, opts);
    }
}
exports.Deployment = Deployment;
//# sourceMappingURL=deployment.js.map